【发布时间】:2014-02-25 01:58:16
【问题描述】:
这个简单的问题让我有点困惑。我有 2 个处理器,它们都可以在 33.0360723 中单独执行 10 亿次操作。 然而他们两个一起做 27.4996964 中的操作。
这对我来说毫无意义,如果一个处理器的任务时间是 X,那么它们两个在一起的时间不应该是 X/2 吗?
我的代码:
Function calc(ByVal i As Integer, ByVal result As String)
Math.Sqrt(i)
Return True
End Function
Sub Main()
Dim result As String = Nothing
Dim starttime As TimeSpan
starttime = DateTime.Now.TimeOfDay
For i = 0 To 1000000000
calc(i, result)
Next
Console.WriteLine("A single processor runs 1 billion operations in: ")
Console.WriteLine(DateTime.Now.TimeOfDay - starttime)
starttime = DateTime.Now.TimeOfDay
Parallel.For(0, 1000000000, Function(i) calc(i, result))
Console.WriteLine("All your processors run 1 billion operations in: ")
Console.WriteLine(DateTime.Now.TimeOfDay - starttime)
Console.ReadLine()
End Sub
PS:我在 VB.net 中为此编写了代码。
【问题讨论】:
-
显示代码!很可能您的示例在同步两个处理器方面的开销远大于实际工作。
-
第二个处理器是超线程虚拟处理器吗?
-
这是个好问题,不应该被关闭。