。
コンパイラがC++で記述されたコードを最適化できる/実行できるすべての可能な方法(または少なくとも人気のある方法)を知りたいですか?また、最適化がどのように正確に行われるか(それぞれの場合)を知りたいです!
これまでのところ、私は2つの最適化、つまり 空のベースの最適化(EBO)と戻り値の最適化(RVO)。他に何がありますか?「定数」最適化、「未使用変数」最適化について聞いたことがあります。彼らは何ですか?
。
。
コンパイラがC++で記述されたコードを最適化できる/実行できるすべての可能な方法(または少なくとも人気のある方法)を知りたいですか?また、最適化がどのように正確に行われるか(それぞれの場合)を知りたいです!
これまでのところ、私は2つの最適化、つまり 空のベースの最適化(EBO)と戻り値の最適化(RVO)。他に何がありますか?「定数」最適化、「未使用変数」最適化について聞いたことがあります。彼らは何ですか?
。
すべての可能な方法?確かにあなたは冗談を言っています。そのためには、何年にもわたるコンパイラの研究と実践を調べてください。
具体的な例については、ここで各オプションを調べてください:http: //gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
標準ドキュメント、セクション1.9、
4)この規定は、「あたかも」ルールと呼ばれることもあります。これは、要件が遵守されているかのように結果が得られる限り、実装はこの国際規格の要件を自由に無視できるためです。プログラムの観察可能な動作。たとえば、実際の実装では、その値が使用されておらず、プログラムの観察可能な動作に影響を与える副作用が発生していないと推測できる場合、式の一部を評価する必要はありません。
したがって、実際には、標準に準拠したコンパイラーは、目的の結果が得られる限り、あらゆる種類の最適化を実行できます。
多くの最適化があり、コンパイラの作成者は常にもっと考えているので、信じられないほど広いです。それらはたくさんあり、実行時に最適化するものもあれば、バイナリサイズに最適化するものもあります。多くは特にC++でもありません。一般的なコンパイラ最適化手法は、多くの異なる言語の多くのコンパイラ/インタプリタに実装されています。
ほんの一握り:
より詳しい情報: