Поиск всех динамических инициализаций в библиотеке
У меня есть несколько больших кодовых баз, которые компилируются в динамические библиотеки. Я знаю, что некоторые из них имеют очень дорогие динамические глобальные динамические инициализаторы. (То есть глобальные экземпляры классов / структур, которые очень дороги в создании.)
Я хотел бы получить способ просмотреть список того, что / где эти динамические инициализаторы находятся в коде, чтобы я мог видеть, являются ли они дорогими и нуждаются в рефакторинге. Я бы хотел не копаться во многих сборках, так как некоторые из этих библиотек довольно большие и, вероятно, содержат сотни динамических инициализаторов (многие из них небольшие и довольно дешевые, например, конструирование строк).
Есть ли инструмент, который может помочь мне с этим? (Моя цепочка инструментов - Redhat Linux/gcc/cmake.)
1 ответ
Как насчет запуска вашего кода с помощью инструмента callgrind от valgrind, который будет профилировать его выполнение (я полагаю, когда вы сказали, что дорого вы имеете в виду процессор, а не ввод / вывод). Напишите небольшую тестовую программу, которая не делает ничего, кроме загрузки этих многих вещей, которые вас беспокоят, и затем анализируйте профиль (например, используя графический инструмент kcachegrind в выходном файле callgrind).