У меня есть библиотека C ++, которая генерирует гораздо больший код, который я действительно ожидал бы от того, что он делает. Из менее чем 50 тыс. Строк исходного кода я получаю общие объекты размером почти 4 МБ и статические архивы, загружающие 9. Это проблематично, поскольку двоичные файлы библиотеки достаточно велики, и, что гораздо хуже, даже простые приложения, ссылающиеся на него, обычно получают от 500 до 1000 КБ в размере кода. Компиляция библиотеки с такими флагами, как -Os, несколько помогает, но не очень.
Я также экспериментировал с командой GCC -frepo (хотя вся документация, которую я видел, предполагает, что в Linux collect2 все равно будет объединять дубликаты шаблонов) и явным созданием экземпляров шаблонов на шаблонах, которые, "казалось", часто дублируются, но без реального эффекта в любом случае. Конечно, я говорю «вероятно», потому что, как и при любом профилировании, слепое предположение почти всегда неверно.
Есть ли какой-нибудь инструмент, который позволяет легко профилировать размер кода, или каким-то другим способом, которым я могу выяснить, что занимает так много места, или, вообще, какие-либо другие вещи, которые я должен попробовать? Что-то, что работает под Linux, было бы идеально, но я возьму то, что смогу получить.