【问题标题】:.NET micro-benchmarking API [closed].NET 微基准测试 API [关闭]
【发布时间】:2011-09-18 14:26:09
【问题描述】:

我正在寻找一个用于对单元测试进行微基准测试的库,以监控代码更改如何随着时间的推移影响性能。也就是说,我希望库将结果输出到例如XML 来保存历史。它必须能够在没有任何人工助手的情况下做到这一点(即在我们的构建服务器上连续运行而没有太多麻烦)。

该库应该非常简单,并且可以处理现有的单元测试。最好我想在我要测试的测试上使用[Benchmark] 属性标记测试或使用using-block,例如

using (var benchmarker = new Benchmarker())
{
  // Code to profile
} // Dispose() stores measurements.

请注意,我对分析工具并不感兴趣,因为我不想以编程方式指定要分析的代码部分。该库应该得到积极维护。

我看过Jon Skeet's solution,但发现它有点太侵入性了,而且NTime 已经死了几年了。

【问题讨论】:

  • 您可能想看看 Noda Time 内的基准测试项目:code.google.com/p/noda-time/source/browse/… 我认为使用 现有 单元测试进行基准测试不是一个好主意,就个人而言……可以进行良好的单元测试的东西不一定是好的基准测试。特别是,如果您每次构建只运行一次“昂贵”的断言是完全合理的,但您不希望它搞砸基准。
  • @Jon Skeet:是的 - 我不打算将[Benchmark]-tags 添加到我所有现有的测试中,而是与单元测试并排编写基准测试并以最佳方式运行它们。测试只会对代码的一小部分进行基准测试,而不是集成。 QtTests QBENCHMARK 接近我正在寻找的内容(但对于 C++)。

标签: c# .net unit-testing profiling benchmarking


【解决方案1】:

您可以在单元测试中使用 Performance Profiler,并保存结果。进行更改并重新配置文件。有更复杂的方法,但添加新的工作流程并不总是最好的选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    • 1970-01-01
    • 2011-01-26
    • 2014-04-24
    相关资源
    最近更新 更多