【问题标题】:Performance testing utilities for C++ [closed]C ++的性能测试实用程序[关闭]
【发布时间】:2011-06-04 03:02:48
【问题描述】:

我很好奇是否有人对性能测试库和前端有任何建议,这些库和前端将为 C++ 生成漂亮的图形图表(例如 gcov 如何生成覆盖率数据,并且有用于查看代码覆盖率数据的前端)。能够生成如下图表:

http://download.eclipse.org/eclipse/downloads/drops/S-3.7M4-201012081300/performance/performance.php?fp_type=0

会很漂亮。我们现在使用 cppunit 进行单元测试,所以也许有一些与之集成的东西。

更多信息:我们正在英特尔 x86-64 机器上的 Linux(我们使用 Ubuntu Lucid/Maverick)上进行编译。

【问题讨论】:

  • stackoverflow.com/questions/4394606/…,有一个有趣的正在进行的列表......
  • 这在很大程度上取决于您运行的操作系统和 CPU 是否可用...您是否在寻找更多的自动化测试或性能分析?
  • 我想的更像是一个自动回归测试设置,它特别适合性能指标。利用 cppunit 会很酷,但这不是必需的,我会对任何类型的性能测试工具感兴趣。分析将是我们在回归测试发现一些较大的运行时命中或类似情况后采取的步骤。

标签: c++ performance-testing


【解决方案1】:

一些建议:

  • googletest C++ 框架能够生成与 JUnit 兼容的报告。
  • Hudson 可用于运行您的测试。它只要求您的 C++ 应用程序可以作为控制台应用程序运行。
  • Hudson Performance Plugin 可以从 JUnit 报告中生成图形图表。
  • 还有很多其他plugins

【讨论】:

    【解决方案2】:

    在 linux 上,您可以尝试使用 valgrind 工具包。 Valgrind 包括可以分析您的代码的 callgrind 工具。 KCacheGrind 很好地可视化了 cachegrind 的输出。

    【讨论】:

    • 这个想法不是对代码进行分析,本质上,它是创建一个夜间构建系统,它可以通过在某些性能上采用一些简单的指标(甚至可能只是运行时)来通知我们性能回归。我们将进行的单元测试。所以我们并不特别想检测我们的代码,我们只想看看它的原始性能。
    • @Kenny:您可以解析cg_diff 的输出以生成您想要的图形。
    【解决方案3】:

    在回答 herehere 时,我对这类事情的经验中的一些希望相关的注释。

    您现有的 CppUnit 设置与 scoped_timer 之类的设置相结合(参见上面的第二个)以及对某些图表的一些后处理可能不应该满足您的需求。虽然我相信 CppUnit 包含一个插件(“Clocker”?),它会注销 unittest 时间,但我认为它实际上对于这种性能测试在实践中并没有那么有用,因为你总是希望只为每个测试的一部分计时而不是所有的设置代码。

    【讨论】:

      【解决方案4】:

      有两个性能测试框架可以帮助你。

      它们都受到 Google Test 框架的启发,并提供了支持性能测试的接口,因此很容易将您的原始 googletest 传输到 HayaiSkyPat

      SkyPat 结合了单元测试和 perf_evnet。它扩展了 Google Test 的概念,并提供了访问 PMU 的接口。 perf_event 为SkyPat 提供准确的周期计数,这对于对时序变化敏感的工具(例如编译器)很有用。 SkyPat 还可以通过 PMU 事件(eq:周期、指令、缓存引用、缓存未命中等)分析一段代码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-10-22
        • 1970-01-01
        • 2015-08-07
        • 2017-10-28
        • 1970-01-01
        • 2013-02-11
        • 1970-01-01
        相关资源
        最近更新 更多