最新の最適化コンパイラは、ループの展開やコードのインライン化などの特定の最適化をいつ適用するかをどのように決定しますか?
これらは両方ともキャッシングに影響するため、単純に X 行未満の関数をインライン展開したり、その他の単純なヒューリスティックを使用したりすると、パフォーマンスの悪いコードが生成される可能性があります。では、現代のコンパイラはこれをどのように処理するのでしょうか?
これに関する情報 (特に、かなり理解しやすい情報) を見つけるのに苦労しています。詳細、書籍/記事/論文へのリンクは大歓迎です!
編集:答えは主に私が言及した2つの最適化(インライン化とループ展開)について話しているので、これら2つだけでなく、すべてのコンパイラー最適化に興味があることを明確にしたかっただけです。また、事前コンパイル中に実行できる最適化にも関心がありますが、JIT 最適化にも関心があります (程度はわずかですが)。
ありがとう!