我在c#
VS2010
上使用windows 7
语言编写了两个程序。
我想根据运行时间比较它们,换句话说我想知道哪一个更快。
不幸的是他们的运行持续时间是毫秒级。问题是当我看到其中一个更快但我再次重复运行它们时我单独运行它我看到另一个结果我的意思是更快一个更改为慢一个。
窗口中是否有任何东西可以带来两个完全相同的环境以便比较时间?
两者的输入文件是相同的,当我使用更大的输入文件时间先于秒,但即使问题仍然存在
答案 0 :(得分:1)
任何“测量速度太快”的分析问题都可以通过重复进行来解决。在循环中运行您的测试代码,执行它一千或一百万次。如果您正在测量单个cpu指令,则需要10亿。
不意味着您的测量值代表了您只执行一次时的运行方式。现代机器在完成以前从未做过的工作时非常糟糕,高速缓存是王者。但是,您将获得代码的摊销执行时间的度量。当代码需要处理实际数据集时,真正非常重要。
答案 1 :(得分:1)
每次确保环境完全相同的唯一方法是创建测试环境的映像并将其作为虚拟机运行。然后,您可以在每次新测试时重新加载系统。
但是,可以用毫秒来衡量运行时间,只需要使用Stopwatch类。
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
// run your test here...
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10);
Console.WriteLine("RunTime " + elapsedTime);
或者,你可以多次运行你的测试,每次都有时间,任何轻微的差异都会被平均。