私は例によって、接頭辞の増分が接尾辞の増分よりも効率的であることを示しようとしています。
理論的には、これは理にかなっています。i++は、インクリメントされていない元の値を返すことができる必要があるため、それを格納できますが、++ iは、前の値を格納せずにインクリメントされた値を返すことができます。
しかし、これを実際に示す良い例はありますか?
次のコードを試しました。
int array[100];
int main()
{
for(int i = 0; i < sizeof(array)/sizeof(*array); i++)
array[i] = 1;
}
私は次のようにgcc4.4.0を使用してコンパイルしました:
gcc -Wa,-adhls -O0 myfile.cpp
接尾辞の増分を接頭辞の増分に変更して、これをもう一度行いました。
for(int i = 0; i < sizeof(array)/sizeof(*array); ++i)
結果は、どちらの場合も同じアセンブリコードになります。
これはやや予想外でした。最適化をオフにすることで(-O0を使用)、概念を示すために違いが見られるはずです。私は何が欠けていますか?これを示すためのより良い例はありますか?