【发布时间】:2012-04-25 15:03:03
【问题描述】:
我正在用 c# 解决一些算法问题并将它们作为控制台应用程序运行。
为了检查应用程序的效率,我想看看它们的运行时间是多少。
目前我正在打印程序开始和结束时的时间并计算时间差,但是有没有办法减少Observer' effect?
一些我不知道的内置工具/插件?
【问题讨论】:
我正在用 c# 解决一些算法问题并将它们作为控制台应用程序运行。
为了检查应用程序的效率,我想看看它们的运行时间是多少。
目前我正在打印程序开始和结束时的时间并计算时间差,但是有没有办法减少Observer' effect?
一些我不知道的内置工具/插件?
【问题讨论】:
您应该使用专门为此设计的 Stopwatch 类。
为避免测量 JIT 时间,您还应该在测量任何内容之前至少运行每个算法一次,以便 JIT 有时间运行。
在测量算法时,您应该将每个算法运行数百次并取平均运行时间。
【讨论】:
由于观察者的影响,最重要的延迟来源是打印本身。另一个潜在的延迟因素是调试消息文本格式。所以我建议如下:
【讨论】:
使用stopwatch class。以下面的方法为例。
using System.Diagnostics;
public void yourAlgorithm()
{
Stopwatch timePerParse = Stopwatch.StartNew();
/** -- TODO --**/
timePerParse.Stop();
Console.WriteLine(timePerParse.ElapsedMilliseconds);
}
【讨论】: