我正在用 C# 测试一些案例,以考虑性能方面的一些要素, 当我在测试时,我遇到了一个奇怪的案例
for (int i = 0; i < 30; i++)
{
DateTime d = DateTime.Now;
print();
result.Add ((DateTime.Now - d));
}
foreach(TimeSpan t in result)
Console.WriteLine(t.ToString());
虽然打印功能很简单:
public static void print ()
{
for (int i = 0; i < 10000; i++)
{
Console.WriteLine( string.Format("{0}", i));
}
}
我对结果感到震惊,前三个循环大约需要 5 秒,而之后大约需要 0.5 秒。 这是一些:
00:00:05.6212696
00:00:05.6072002
00:00:05.5837965
00:00:01.9451673
00:00:00.5526335
00:00:00.5540554
00:00:00.5676418
00:00:00.5372442
00:00:00.5772550
我只是想知道为什么第三次迭代后它好转了将近10倍?
最佳答案
此处的瓶颈将是 Console.WriteLine
。各种因素都可能影响它,但特别是如果您最小化窗口或类似的东西,这可能大大加快速度。
你确定你真的在测量有用的东西吗?您的实际应用程序是否向控制台执行大量写入操作?
请注意,通常使用 Stopwatch
会更好而不是 DateTime.Now
用于衡量性能,尽管它在这里不会有太大区别。
关于C# 性能异常案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9391192/