【发布时间】:2017-01-08 22:28:56
【问题描述】:
我试图对两个几乎相同的循环进行“基准测试”。当我一一检查它们时,减法没有任何问题,并且 TimeSpan 以 TotalMilliseconds 的形式返回正确的数字。当我将两个循环一起进行基准测试时,第一个减法返回一个 3 - 4 之间的数字(应该是正确的),第二个总是返回 0。我做错了什么?谢谢!
class Program
{
static void Main(string[] args)
{
Console.WriteLine(":: Simple for ::");
var a = 0;
var start = DateTime.Now;
for (int i = 0; i < 10; i++)
{
a += i;
}
Console.WriteLine("Elapsed time: {0} ms", (DateTime.Now - start).TotalMilliseconds); // 3 - 4 ms
Console.WriteLine(":: Fancy for ::");
a = 0;
start = DateTime.Now;
foreach (var i in Enumerable.Range(0, 9))
{
a += i;
}
Console.WriteLine("Elapsed time: {0} ms", (DateTime.Now - start).TotalMilliseconds); // 0 ms
}
}
【问题讨论】:
-
奇怪的是你得到了 4 毫秒。因为数到 10 应该在几微秒内完成,甚至不到 1 毫秒......除非你在木制电脑上运行但仍然......
-
其实是i5
-
谢谢,非常感谢!
标签: c#