C# 性能异常案例

标签 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());

虽然打印功能很简单:

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/

相关文章:

在c中从int转换时间

java - 小时是否在跨越 2 天的时间范围内?

c# - 我无法通过 C# 7.0 中的反射从 valuetuple 获取参数名称

c# - .NET 4 MVC 2 带有注释警告而不是错误的验证

objective-c - 是否有任何关于使用 ARC 的性能影响的具体研究?

javascript - 杂乱的 JavaScript 标签,如何改进 index.html

python - 同时有效地获取 numpy.argmin 和 numpy.amin

objective-c - 如果时间为零,如何使 NSDateFormatter 不包括时间?

c# - 从 SELECT 语句生成 CREATE TABLE 脚本

c# - 从 TextBox 获取 .Text 值