ちょっとだけね

DXRubyのコンパイルオプションに/Faをつけてアセンブラのコードを吐き出してみた。
んで、愕然。
ぜんぜん最適化されてねぇwwww
Makefileのオプションを見るとそれっぽいものが付いてるのだが、それを外してみても変わらず。
最適化関連をバサっと消して、-O2だけ付けてみたら最適化されて、5%ほど性能が上がった。
うーん・・・元がVC6用だからなんだろーか。
完全に俺のミスだ。


んで、それを見つつCのソースをいじる。
floatを多用しているからfldとfst命令がたくさんある。
同じデータを連続でメモリに設定するようにすれば、余分なfldが消える。
ってことで並べ替え。
最適化されるといっても、メモリを書き換える場合はその順番は保証されるから、これは自分でやらないといけない。
計算してるところもまとめたら、計算結果は使いまわされるようになった。
これだよ、こうなってほしかったんだーって感じ。


これ以上はほんとに自分でアセンブラ書く世界になっちゃうから、ここまで。