負けた

gccがどれくらい速いのかというのを確認するためにintの階乗という簡単なプログラムを手書きアセンブラC言語で書いて実行してみた。手書きアセンブラは末尾再帰にしたりレジスタ渡しにしたりその場で思い付く限りの高速化を加えたもの。
しかし、手書きアセンブラと-O2, -O3が互角だった。あとはstalinも試してみたが大差なし。大域最適化する余地のない問題では簡単に頭打ちになってしまうようだ。
でも問題が大きくなるとアセンブラが最初に脱落するのは明らかだし、最適化の方法論を学ぶしかないのだろう。