我用onc#
语言编写了两个程序。VS2010
windows 7
我想根据运行时间来比较它们,换句话说,我想知道哪个更快。
不幸的是,它们的运行时间以毫秒为单位。问题是,当我单独运行它们时,一旦我看到它们中的一个更快,但接下来当我再次重复运行它们时,我看到另一个结果,我的意思是更快的一个变为更慢的一个。
windows中有什么东西可以带来两个完全相等的环境来比较时间吗?
他们两个的输入文件是相同的,当我使用更大的输入文件时,时间早于几秒钟,但即使问题仍然存在
我用onc#
语言编写了两个程序。VS2010
windows 7
我想根据运行时间来比较它们,换句话说,我想知道哪个更快。
不幸的是,它们的运行时间以毫秒为单位。问题是,当我单独运行它们时,一旦我看到它们中的一个更快,但接下来当我再次重复运行它们时,我看到另一个结果,我的意思是更快的一个变为更慢的一个。
windows中有什么东西可以带来两个完全相等的环境来比较时间吗?
他们两个的输入文件是相同的,当我使用更大的输入文件时,时间早于几秒钟,但即使问题仍然存在
任何“测量速度太快”的分析问题都可以通过重复执行来解决。在一个循环中运行您的测试代码,执行一千或一百万次。如果您正在测量单个 cpu 指令,则为十亿。
这并不意味着当您只执行一次测量时,您的测量就代表了它的运行方式。现代机器在做他们以前从未做过的工作方面非常糟糕,缓存为王。但是您将获得代码的摊销执行时间的测量值。当您的代码需要处理真实数据集时,这才是真正重要的。
确保您的环境每次都完全相同的唯一方法是创建测试环境的映像并将其作为虚拟机运行。然后,您可以使用每个新测试重新加载系统。
但是,可以以毫秒为单位测量运行时间,您只需要使用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);
或者,您可以多次运行测试,并且每次都运行一次,任何轻微的差异都会被平均化。