ループの展開 (C/C++ で) が最適化に役立つのはどの時点かを最初に説明してもらえますか?
2 番目に、最初の質問に関連して、展開をそれ以上実行してはいけないのはどの時点ですか? アンローリングは、操作を 2 の累乗のバッチに分割して常に実行する必要がありますか? それとも、CPU が実行できる計算の数に関係していますか? キャッシュ ライン サイズの乗数である比率は? 等
たとえば、0 から 99 までの for ループがあった場合、どちらが良いか (試行錯誤以外に) どのように決定するか - 科学的な方法はありますか?
- 0 ~ 49 および 1 ループあたり 2 つの「操作」
- ループごとに 0 ~ 24 および 4 つの「操作」
- ループごとに 0 ~ 19 および 5 つの「操作」
- ループごとに 0 ~ 9 および 10 の「操作」