Я долго задавался вопросом, когда писал свои файлы C++ CMake, которые быстрее для компилятора:
- Помещение всех файлов cpp моего проекта в одну общую библиотеку
.so
с использованиемadd_library()
- Использование нескольких библиотек, по одной для каждого класса/логического компонента.
Поиск в Интернете не нашел подходящих статей об этом любопытстве, поэтому я решил провести очень простой эксперимент. Я сделал две версии своего проекта - одну с одной библиотекой и одну с двумя библиотеками. Я обнаружил, что при прогонах версия с одной библиотекой была на 25 % быстрее при компиляции с нуля и на 1 % быстрее при компиляции после изменения одной строки в одном из файлов. Правда, мои эксперименты были не очень тщательными.
Меня это удивляет — я всегда думал, что наличие нескольких библиотек ускорит компиляцию небольших изменений только в одной из библиотек, потому что компилятору не придется трогать другие библиотеки, которые от него не зависят.
- Кто-нибудь знает общее правило производительности библиотек CMake?
- Кто-нибудь может объяснить, почему я вижу эту разницу?
Спасибо!
Обновление: я собираю Ubuntu 14.04 с gcc 4.8.4.
.a
,.lib
) или общей (.so
,.dll
), платформа =OS
,compiler
,linker
- person fghj   schedule 03.05.2016