我很好奇是否有人对性能测试库和前端有任何建议,这些库和前端将为 C++ 生成漂亮的图形图表(例如 gcov 如何生成覆盖率数据,并且有用于查看代码覆盖率数据的前端)。能够生成如下图表:
会很光滑。我们现在使用 cppunit 进行单元测试,所以也许有一些与之集成的东西。
更多信息:我们正在英特尔 x86-64 机器上的 Linux(我们使用 Ubuntu Lucid/Maverick)上进行编译。
我很好奇是否有人对性能测试库和前端有任何建议,这些库和前端将为 C++ 生成漂亮的图形图表(例如 gcov 如何生成覆盖率数据,并且有用于查看代码覆盖率数据的前端)。能够生成如下图表:
会很光滑。我们现在使用 cppunit 进行单元测试,所以也许有一些与之集成的东西。
更多信息:我们正在英特尔 x86-64 机器上的 Linux(我们使用 Ubuntu Lucid/Maverick)上进行编译。
一些建议:
在 linux 上,您可以尝试使用 valgrind 工具包。Valgrind 包括可以分析您的代码的 callgrind 工具。KCacheGrind 很好地可视化了 cachegrind 的输出。
有两个性能测试框架可以帮助你。
它们都受到 Google Test 框架的启发,并提供了支持性能测试的接口,因此很容易将您的原始 googletest 传输到Hayai或SkyPat。
SkyPat结合了单元测试和 perf_evnet。它扩展了 Google Test 的概念,并提供了访问 PMU 的接口。perf_event 为SkyPat提供准确的周期计数,这对于对时序变化敏感的工具(例如编译器)很有用。SkyPat还可以通过 PMU 事件(eq:周期、指令、缓存引用、缓存未命中等)分析一段代码。
Hayai在其性能测试框架中支持多种不同操作系统(Windows:QueryPerformanceCounter()
、Linux:gethrtime()
、Apple(OSX、iOS) :)的性能测量方法。mach_absolute_time()