查找库中的所有动态初始化

Finding all dynamic initializations in a library

本文关键字:动态 初始化 查找      更新时间:2023-10-16

我有几个编译成动态库的大型代码库。我知道其中一些有一些非常昂贵的动态全局动态初始化器。(也就是说,类/结构的全局实例构造起来非常昂贵。)

我想要一种方法来查看这些动态初始化器在代码中的内容/位置列表,以便我可以查看它们是否昂贵并且需要重构。我希望避免深入研究大量的汇编,因为其中一些库非常大,可能包含数百个动态初始化器(其中许多小而相当便宜,如字符串构造)。

有什么工具可以帮我做这个吗?(我的工具链是Redhat Linux/gcc/cmake.)

在valgrind的callgrind工具下运行您的代码,它将分析其执行情况(我假设当您说昂贵时您指的是CPU,而不是I/O)。编写一个小的测试程序,除了加载这些你关心的东西之外什么都不做,然后分析配置文件(例如,在callgrind输出文件上使用图形工具kcachegrind)。