C#表现奇怪的情况

Hil*_*lmi 4 c# performance time

我正在用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());
Run Code Online (Sandbox Code Playgroud)

虽然打印功能很简单:

public static void print ()
{
     for (int i = 0; i < 10000; i++)
     {
         Console.WriteLine( string.Format("{0}", i));       
     }
}
Run Code Online (Sandbox Code Playgroud)

我对结果感到震惊,而前三个循环花了大约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
Run Code Online (Sandbox Code Playgroud)

我只是想知道为什么在第三次迭代后它变好了近10倍?

Jon*_*eet 8

你的瓶颈就是这样Console.WriteLine.各种各样的事情可能会影响到这一点,但特别是如果你最小化窗口或类似的东西,这可能会大大加快速度.

你确定你真正在测量任何有用的东西吗?您的真实应用程序是否会对控制​​台进行大量编写?

请注意,使用它通常StopwatchDateTime.Now测量性能更好,尽管这里没有太大区别.