裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

最適化なんかしなくてよい

2012年05月16日 | ブログラミング

いくつかの場合について実測してみた

> y <- runif(100000000)
> # 2倍するのと足し算の差はない
> system.time(2*y)
   ユーザ   システム       経過  
     0.458      0.594      1.054
> system.time(y+y)
   ユーザ   システム       経過  
     0.435      0.551      0.979
> # 2乗と掛け算の差はない
> system.time(y^2)
   ユーザ   システム       経過  
     0.443      0.535      0.971
> system.time(y*y)
   ユーザ   システム       経過  
     0.438      0.528      0.958
> # 3乗と2回の掛け算なら,2回の掛け算の方が速い
> system.time(y^3)
   ユーザ   システム       経過  
     4.084      0.549      4.611
> system.time(y*y*y)
   ユーザ   システム       経過  
     1.228      1.245     10.646
> # 2進数で正確に表せる数ならば,割り算も掛け算も差はない

> system.time(y/4)
   ユーザ   システム       経過  
     0.448      0.533      0.972
> system.time(y*0.25)
   ユーザ   システム       経過  
     0.442      0.527      0.961
> # 2進数で正確に表せない数ならば,掛け算の方が速い
> system.time(y/10)
   ユーザ   システム       経過  
     1.024      0.516      1.529
> system.time(y*0.1)
   ユーザ   システム       経過  
     0.442      0.524      0.958
> # 1/2乗と sqrt 関数では,sqrt の方が速い
> system.time(y^0.5)
   ユーザ   システム       経過  
     1.234      0.509      1.731
> system.time(sqrt(y))
   ユーザ   システム       経過  
     0.978      0.512      1.479
> # 整数倍と実数倍では,実数倍の方が速い
> system.time(123L*y)
   ユーザ   システム       経過  
     0.560      0.516      1.068
> system.time(123*y)
   ユーザ   システム       経過  
     0.441      0.536      0.968
> # でもねえ,100000000 回の演算でこれだけしか違わないのだから,どっちでもよい

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« プログラムの最適化をすると... | トップ | 最適化なんかしなくてよい その2 »
最新の画像もっと見る

コメントを投稿

ブログラミング」カテゴリの最新記事