最佳实践

使用编译的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版权协议,转载请附上原文出处链接及本声明。

results matching ""

    No results matching ""