假设我有两个方法
但是这种方式,除了第一次运行
澄清一下,所谓的“大致相同”,是指两种方法的使用方式相同,但实际算法可能有很大的差异。例如,
是的,我知道在冷启动时运行的方法对整体性能没有太大的影响。我仍然想知道哪个更快。
Foo
和Bar
,它们做的事情差不多,我想测量哪一个更快。此外,单次执行Foo
和Bar
都太快了,无法可靠地测量。
通常,我会像这样运行它们很多次:
var sw=new Stopwatch();
sw.Start();
for(int ii=0;ii<HugeNumber;++ii)
Foo();
sw.Stop();
Console.WriteLine("Foo: "+sw.ElapsedMilliseconds);
// and the same code for Bar
但是这种方式,除了第一次运行
Foo
之外,每次运行都可能使用处理器缓存而不是实际内存。这可能比在真实应用程序中快得多。我该怎么做才能确保每次都运行我的方法呢?澄清一下,所谓的“大致相同”,是指两种方法的使用方式相同,但实际算法可能有很大的差异。例如,
Foo
可能正在进行一些棘手的数学计算,而Bar
则通过使用更多的内存来跳过它。是的,我知道在冷启动时运行的方法对整体性能没有太大的影响。我仍然想知道哪个更快。