gpt4 book ai didi

visual-studio-2008 - 在 VB 2008 中,为什么操作短裤的时间比整数长?

转载 作者:行者123 更新时间:2023-12-03 16:22:00 24 4
gpt4 key购买 nike

在这个例子中:

Sub Button1_Click(sender As Object, ByVal e As EventArgs) Handles Button1.Click
Dim stopwatch1, stopwatch2 As New Stopwatch : Dim EndLoop As ULong = 10000

stopwatch1.Start()
For cnt As ULong = 1 To EndLoop
Dim Number1 As UInt32
For Number1 = 1 To 20000
Dim Number2 As UInt32 = 0
Number2 += 1
Next
Next
stopwatch1.Stop()

stopwatch2.Start()
For cnt As ULong = 1 To EndLoop
Dim Number1 As UShort
For Number1 = 1 To 20000
Dim Number2 As UShort = 0
Number2 += 1
Next
Next
stopwatch2.Stop()

Label1.Text = "UInt32: " & stopwatch1.ElapsedMilliseconds
Label2.Text = "UShort: " & stopwatch2.ElapsedMilliseconds
End Sub

对于 UInt32 循环,我始终获得大约 950 毫秒的时间,而对于 UShort 循环,我始终获得大约 1900 毫秒的时间。如果我将 UShort 更改为 Short,我也会得到大约 1900 毫秒。

此外,我可以将第二个循环更改为:
stopwatch2.Start()
For cnt As ULong = 1 To EndLoop
Dim Number1 As Integer
For Number1 = 1 To 20000
Dim Number2 As Integer = 0
Number2 += 1
Next
Next
stopwatch2.Stop()

整数循环将始终为 660 毫秒,而 UInt32 循环为 950 毫秒。

与 Short、UShort 和 UInt32 相比,Integers 是更快的数据类型吗?如果是这样,为什么?

最佳答案

我敢打赌,这是因为您机器上的自然字长是 32 位,而执行 16 位操作实际上会给系统带来更多压力,以削减和屏蔽这些位。

如果您在 64 位处理器上进行测试,则 Int64 可能比 Int32 获得更好的结果...

此外,在 .NET 中,所有整数(最多 32 位)算术都会自动向上转换为 int ,因此当您将结果分配回 short 时变量,你造成了一个额外的类型转换步骤。 uint 也是如此。

关于visual-studio-2008 - 在 VB 2008 中,为什么操作短裤的时间比整数长?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1987032/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com