等效于 gprof/callgrind 的性能分析库
Profiling library equivalent to gprof/callgrind
我正在寻找具有分析功能的 C/C++ 库,例如 gprof
或 callgrind
。
更准确地说,我希望它的输出等同于callgrind
发出的输出,以便将其传递给第三方工具,如 KCacheGrind。
我们的想法是能够基于此库设计一个方面,并将其插入到我们团队中正在开发的几个应用程序中。
gperftools的CPU分析器可以使用LD_PRELOAD
或典型的动态链接附加到任意可执行文件。它可以以与调用兼容的格式输出数据。
假设您要分析可执行a.out
。首先将其与 -lprofiler
.之后用CPUPROFILE
环境运行它。变量指向将存储分析数据的文件名。调用研磨格式的数据可以使用pprof
获得。
CPUPROFILE=a.out.prof ./a.out
pprof --callgrind a.out a.out.prof
有趣的是,在未定义的情况下,CPUPROFILE
可执行文件的行为正常。因此,可以轻松启用此探查器,而无需重新编译或重新链接应用程序。
如果由于任何原因您无法更改可执行文件的链接方式,您仍然可以通过按以下方式定义LD_PRELOAD
来分析它。
LD_PRELOAD=/path/to/libprofiler.so CPUPROFILE=a.out.prof ./a.out
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- OpenMP阵列性能较差
- 递归列出所有目录中的C++与Python与Ruby的性能
- 大小相等但成员数量不同的结构之间的性能差异
- 为什么constexpr的性能比正常表达式差
- 用callgrind追踪不必要的副本
- 在多次运行中获得一致的callgrind输出
- 在类中使用随机生成器时出现性能问题
- 在main()之外初始化std::vector会导致性能下降(多线程)
- 海湾合作委员会 ARM 性能下降
- GCC 和 Clang 代码性能的巨大差异
- 在容量内调整矢量大小时的性能影响
- 了解算法的性能差异(如果以不同的编程语言实现)
- 未达到的情况会影响开关外壳性能
- QStringList vs list<shared_ptr<QString>> 性能比较C++
- 是否总是可以将使用递归编写的程序重写为不使用递归的程序C++,性能观点是什么?
- 哪种方法更好,性能明智
- C++ 特征库:引用的性能开销<>
- 与多个 for 循环与单个 for 循环 wrt 相关的性能从多映射获取数据
- 等效于 gprof/callgrind 的性能分析库