カメヲラボ

主にプログラミングとお勉強全般について書いてます

C

どんな最適化やねん(4)

VC++の最適化ってどないやねん(2) 再びabs関数の速度比較に戻ります.前回(http://d.hatena.ne.jp/Ozy/20071111#p1)のコメント欄に書いたことのまとめですが,if文で分岐させたabs1とビット演算を使ったabs2は最適化によってかなりの速度差になることがわか…

どんな最適化やねん(3)

VC++の最適化ってどないやねん 単純なコード main() { int i,j; for(i=0;i<10000;++i) { for(j=0;j<100000;++j) { // 何もしない } } } コイツをGCC(3.4.4)で-O2コンパイルしてみると, .globl _main .def _main; .scl 2; .type 32; .endef _main: pushl %eb…

どんな最適化やねん(2)

前回に続いて,AMD Sempron 3000+ (1.79GHz)で調べてみました.gccのバージョンは同じです.VC++6.0は入ってなかったのでやってません. VC++2005 Express オプション abs2 abs1 /Od 140.0s 192.1s /O2 33.2s 33.2s cygwin gcc 3.4.4 オプション abs2 abs1 -…

どんな最適化やねん(1)

32ビット整数の絶対値を返すabs関数は,条件分岐を使って int abs1(int x) { if(0<x)return x; else return -x; } と書くより int abs2(int x) { int y = x>>31; return (x^y)-y; } とした方が格段に速い!とコルンさん(id:colun)から聞いたとき,正直私は「そんな速いんカナー」と思ってしまったわけですが,VC++の最適化を用いてラ</x)return>…