裏 RjpWiki

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

最適な関数を最適に使おう

2014年05月08日 | ブログラミング

統計を始める方へ(1)_データ環境Rの基本的なプログラミング|データアーティスト」で,サイコロをシミュレーションするプログラム片で,round(6*runif(n)+0.5) が使われていたので,重箱の隅つつき...

> n <- 1e8
> system.time(x <- round(6*runif(n)+0.5))
   ユーザ   システム       経過  
     7.789      0.625      8.362
> system.time(x <- sample(1:6, n, replace=TRUE))
   ユーザ   システム       経過  
     2.860      0.460      3.296
> system.time(x <- sample(6, n, replace=TRUE))
   ユーザ   システム       経過  
     1.780      0.153      1.923

意外とやりそうなのが,sample(1:6, n, replace=TRUE) であるが,これは,sample(6, n, replace=TRUE) より劣る。以下の例を見れば分かる。何故そうなるかは,sample のソースを見れば分かる。

> n <- 1e8
> m <- 1e5
> system.time(y <- sample(1:m, n, replace=TRUE))
   ユーザ   システム       経過  
     3.281      0.485      3.741
> system.time(y <- sample(m, n, replace=TRUE))
   ユーザ   システム       経過  
     1.781      0.162      1.932

 

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« キー入力が短ければよいとい... | トップ | 余計なことはしない »
最新の画像もっと見る

コメントを投稿

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