結論としては、2006年現在においても (x86 + Windows のメジャーなコンパイラ実装に関する限り)、配列版がポインタ版と同等のマシン語を出力することはできない、ということになりそうですね 。
もっとも、Borland の最新版 C++ コンパイラは 6.x のはずですし、OpenWatcom の最新版も 1.5 ですから、必ずしも「2006年現在」の状況とは言えません。
それに Sun Studio [sun.com] のようなコンパイラでは試していませんので、今のところは「かの言説は必ずしも真ではない」という程度にしかなりませんが。
VC++ 2005の結果 (スコア:2, 興味深い)
後者は理想的なコードを吐き出しましたが、前者はかなりスパゲッティなコードになりました。
Re:VC++ 2005の結果 (スコア:1)
実験ありがとうございます。 _o_
実はこのテストをしてみたいがために、Visual C++ 2005 Express Edition [microsoft.com] をダウンロードしたのですが、別の日記 [srad.jp]に書いた通り、ローカルディスクに空きがないため、install を断念していたのでした (まだ増設用の HDD を購入していない)。
結論としては、2006年現在においても (x86 + Windows のメジャーなコンパイラ実装に関する限り)、配列版がポインタ版と同等のマシン語を出力することはできない、ということになりそうですね 。
もっとも、Borland の最新版 C++ コンパイラは 6.x のはずですし、OpenWatcom の最新版も 1.5 ですから、必ずしも「2006年現在」の状況とは言えません。 それに Sun Studio [sun.com] のようなコンパイラでは試していませんので、今のところは「かの言説は必ずしも真ではない」という程度にしかなりませんが。