最佳实践
使用编译的Release版本
不要使用visual studio debug模式编译的dll来做基准测试。因为调试版本的基准测试可能比10-100慢倍。Release版本,意味着您应该在csproj文件中有
<Optimize>true</Optimize>
,或者使用
/Optimize
进行csc编译。另外,在基准测试期间,您永远不应该使用附加的调试器(例如Visual Studio或WinDbg)。最好的方法是在发布模式中构建我们的基准,并从命令行运行它。
尝试不同的环境
请不要推断你的结果。或者做得非常小心。我再次提醒:不同环境下的结果可能会有很大的不同。如果Foo1方法比CLR4、.NET Framework 4.5、x64、RyuJIT、Windows的Foo2方法快,则表示Foo1方法比CLR4、.netframework4.5、x64、RyuJIT、Windows的Foo2方法快,仅此而已。但是在尝试之前,您不能对该方法在CLR 2或.NET Framework4.6、LegacyJIT-x64、x86或Linux+Mono的性能做任何说明。
避免死代码消除—————不被使用的代码 ¶
你也应该使用计算结果。例如,如果运行以下代码:
void Foo() { Math.Exp(1); }
然后JIT可以消除这段代码,因为没有使用Math.Exp计算的结果。更好的方法是这样使用:
double Foo() { return Math.Exp(1); }
电源设置和其他应用
- 关闭除基准进程和标准操作系统进程之外的所有应用程序。如果运行基准测试的同时,还在使用visual studio,可能会对基准测试结果造成负面影响。
- 如果您使用笔记本电脑进行基准测试,请保持电源接入并使用最高性能模式。
版权声明:
本文为智客工坊「楠木大叔」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。