При связывании совместно используемой библиотеки (или, по крайней мере, библиотеки DLL Windows) возможна большая оптимизация, и все функции и классы объединяются и реорганизуются для достижения оптимальной производительности (или, как я думаю / надеюсь).
Почему статические библиотеки - это всего лишь пакет объектов? Не лучше ли компоновщику (как по времени, так и по производительности) иметь список переменных, функций, классов и т. Д., Содержащихся в объектных файлах, поэтому при связывании исполняемого файла или общего объекта, использующего эту библиотеку, можно прибыль от уже выполненного прохода оптимизации по взаимозависимым вещам в статической библиотеке?
Создание статической библиотеки не займет много времени (в любом случае будет возможно только ограниченное количество оптимизаций), но последующие этапы сборки с использованием этой библиотеки будут намного быстрее / оптимальными.
PS: Я в основном говорю здесь об оптимизации времени соединения, но, поскольку все популярные инструментальные цепочки гордятся этой возможностью, я уверен, что этот вопрос как-то всплывет? Пожалуйста, не отвечайте на этот вопрос: так было всегда, или совместимость, которую никто никогда не думал изменить. Это не то, что я ищу ...