これは珍しい質問ですが、決定的な答えがあることを願っています。
私たちのオフィスでは、コンパイラがどの程度効率的にコードを生成するか、具体的には命令数について、長年の議論があります。事実上ループのない低電力組み込みシステム用のコードを作成します。したがって、発行される命令の数は消費電力に正比例します。
私たちのコードの多くは次のようになります (注目、動的メモリ割り当てなし、システム コールなし、関数呼び出しはほとんどありません、ループはほとんどありません)。
foo += 3 * (77 + bar);
if (baz > 18 - qux)
bar -= 19 + 7 >> spam;
上記のスニペットをコンパイルし-O3
てアセンブリを読み取ることはできますが、自分で書くことはできませんでした。
私が証明または反証したい主張は、コンパイラが生成するコードは、手書きのアセンブリ コードと比較して 2 ~ 4 倍「太い」(したがって 2 ~ 4 倍の電力を消費する)ということです。
あなたが経験のあるコンパイラに興味があります。
この回答から、GCCとclangがCコードとインターリーブされたアセンブリを次のように出力できることがわかります
gcc -g -c -Wa,-alh foo.cc
これらの回答は、確固たる基盤を提供します。
コンパイラがコードを生成する効率を測定するにはどうすればよいですか?