Поиск всех динамических инициализаций в библиотеке - PullRequest
1 голос
/ 14 ноября 2011

У меня есть несколько больших кодовых баз, которые компилируются в динамические библиотеки. Я знаю, что некоторые из них имеют очень дорогие динамические глобальные динамические инициализаторы. (То есть глобальные экземпляры классов / структур, которые очень дорого построить.)

Мне нужен способ просмотреть список того, что / где находятся эти динамические инициализаторы в коде, чтобы я мог видеть, дорогие ли они и нуждаются ли в рефакторинге. Я бы хотел не копаться во многих сборках, так как некоторые из этих библиотек довольно большие и, вероятно, содержат сотни динамических инициализаторов (многие из них небольшие и довольно дешевые, например, конструирование строк).

Есть ли инструмент, который может мне помочь с этим? (Моя цепочка инструментов - Redhat Linux / gcc / cmake.)

1 Ответ

2 голосов
/ 14 ноября 2011

Как насчет запуска вашего кода с помощью инструмента callgrind от valgrind, который будет профилировать его выполнение (я полагаю, когда вы сказали, что дорого вы имеете в виду процессор, а не ввод / вывод). Напишите небольшую тестовую программу, которая ничего не делает, кроме загрузки этих многих вещей, которые вас беспокоят, а затем проанализируйте профиль (например, используя графический инструмент kcachegrind в выходном файле callgrind).

...