查找库中的所有动态初始化
Finding all dynamic initializations in a library
我有几个编译成动态库的大型代码库。我知道其中一些有一些非常昂贵的动态全局动态初始化器。(也就是说,类/结构的全局实例构造起来非常昂贵。)
我想要一种方法来查看这些动态初始化器在代码中的内容/位置列表,以便我可以查看它们是否昂贵并且需要重构。我希望避免深入研究大量的汇编,因为其中一些库非常大,可能包含数百个动态初始化器(其中许多小而相当便宜,如字符串构造)。
有什么工具可以帮我做这个吗?(我的工具链是Redhat Linux/gcc/cmake.)
在valgrind的callgrind工具下运行您的代码,它将分析其执行情况(我假设当您说昂贵时您指的是CPU,而不是I/O)。编写一个小的测试程序,除了加载这些你关心的东西之外什么都不做,然后分析配置文件(例如,在callgrind输出文件上使用图形工具kcachegrind)。
相关文章:
- 动态初始化 C 与 C++ 中的静态值
- 虚拟成员函数的定义是否强制在同一转换单元中动态初始化静态数据成员?
- 使用 constexpr 和 std::array 进行静态初始化来替换动态初始化的 std::vector 的闰年
- 如何在程序中动态初始化对象
- 3D阵列C 的动态初始化
- 无法解决动态初始化 2D 数组的问题
- 保证非 odr 使用的全局变量的延迟动态初始化
- 静态变量的 Constexpr 构造函数会导致动态初始化
- 使用构造函数动态初始化对象与 c++ 中的新函数
- 在某些情况下,如何理解允许实现将非局部变量的动态初始化视为静态初始化
- 指针阵列的动态初始化
- 给定内存地址的内存动态初始化
- 无法动态初始化类中的数组,除非大小 var 在类之外
- 动态初始化
- 抽象类实例的动态初始化
- 静态 const 数组在 MSVC 中动态初始化
- C++编译器在 main 之后实现动态初始化
- 模板结构内枚举类的动态初始化
- 动态初始化的 2D 数组输出错误
- 当静态或动态初始化时