Производительность компилятора: несколько библиотек против одной библиотеки в CMake

Я долго удивлялся, когда писал мои C ++ CMake файлы, которые быстрее для компилятора:

  1. Помещение всех файлов cpp моего проекта в один общий ресурс .so использование библиотеки add_library()
  2. Использование нескольких библиотек, по одной для каждого класса / логического компонента.

Поиски в Интернете не нашли ни одной соответствующей статьи об этом любопытстве, поэтому я решил провести очень простой эксперимент. Я сделал две версии своего проекта — одну с одной библиотекой и одну с двумя библиотеками. Я обнаружил, что, за прогонами, единственная версия библиотеки была На 25% быстрее при компиляции с нуля и на 1% быстрее при компиляции после изменения одной строки в одном из файлов. Конечно, мои эксперименты были не очень тщательными.

Это удивляет меня — я всегда думал, что наличие нескольких библиотек ускорит компиляцию небольших изменений только в одной из библиотек, потому что компилятору не придется трогать другие библиотеки, которые не зависят от него.

  • Кто-нибудь знает общее правило производительности для библиотек CMake?
  • Кто-нибудь может объяснить, почему я вижу эту разницу?

Спасибо!

Обновить:
Я собираю на Ubuntu 14.04 с gcc 4.8.4

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]