共有ライブラリ (または少なくとも Windows DLL) をリンクすると、多くの最適化が可能になり、すべての関数とクラスが一緒にスローされ、最適なパフォーマンスのために再編成されます (または、そう思う/期待します)。
静的ライブラリがオブジェクトの袋にすぎないのはなぜですか? オブジェクトファイル内に含まれる変数、関数、クラスなどのリストをリンカが (時間的にもパフォーマンス的にも) 持つ方がよいのではないでしょうか。静的ライブラリ内の相互に依存するものに対して既に実行された最適化パスから利益を得ますか?
静的ライブラリの作成にそれほど時間はかかりませんが (いずれにせよ限られた数の最適化のみが可能です)、このライブラリを使用した後続のビルド手順ははるかに高速/最適化されます。
PS: ここでは主にリンク時の最適化について話していますが、人気のあるすべてのツールチェーンがこの機能を誇りに思っているため、この質問が何らかの形で現れると確信しています。この質問に次のように答えないでください。それはいつものやり方であり、互換性は誰も変更しようとは考えていませんでした。それは私が探しているものではありません...