C++相談室 part81
■ このスレッドは過去ログ倉庫に格納されています
0068デフォルトの名無しさん
2010/05/11(火) 02:13:31コードならfがint&じゃなくてint*返すやつでも想定してればいいよ。
中途半端な解析というか、実行時の動作までコンパイラが予測するのはかなりコストが掛かる。
コンパイラ作った事あるなら分かると思うけど、目の前の最適化を目的にしたコード生成は二の次でコンパイラは型レベルの検査や
解析木の生成に忙しく、込み入った最適化は後回しにされる。
しかし参照は「実行時の参照」ではなく「静的に解決できる参照」に視点を置いているので実行時の動作予測フェイズではなく
式解析における意味の判断の時点で「安全な置き換え」が可能なときがある。
ここでいう「安全な置き換え」とは実行時の予測で必要な「考えうるケース全てを検証する」方法(副作用のトレースなど)を排除しているのでスマートに処理ができ、
コンパイル時間への貢献も大きい。
ポインタしかなかった時代では単純に置き換えが可能なinline関数の展開でさえ、その間接参照された変数が
「他の変数の副作用をトレースしなくても最適化可能か?」という問題を解決できず、最適化が阻害されていた。
■ このスレッドは過去ログ倉庫に格納されています