我有几个大型代码库可以编译成动态库。我知道其中一些有一些非常昂贵的动态全局动态初始化器。 (也就是说,构造起来非常昂贵的类/结构的全局实例。)
我想要一种方法来查看这些动态初始化程序在代码中的位置/列表,这样我就可以看到它们是否很昂贵且需要重构。我想避免挖掘大量的程序集,因为其中一些库非常庞大,可能包含数百个动态初始化程序(其中许多很小且相当便宜,比如字符串构造)。
是否有可以帮助我的工具? (我的工具链是Redhat Linux / gcc / cmake。)
答案 0 :(得分:2)
如何在valgrind的callgrind工具下运行你的代码,该工具将描述它的执行情况(我假设当你说CPU意味着昂贵,而不是I / O)。编写一个小的测试程序,除了加载你关心的很多东西之外什么都不做,然后分析配置文件(例如在callgrind输出文件中使用图形工具kcachegrind)。