裏 RjpWiki

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

for ループが遅いなんて,誰が言った? その2

2012年02月27日 | ブログラミング

> ベンチマークで利用しているデータは10,000行1,000列のデータフレームですが、for 文が有利なように恣意的に設定されている気がします。
> colMeans のボトルネックは as.matrix であり、for 文のボトルネックは R 側で行われる繰り返し処理そのものです。

恣意的に設定したわけではないけど。状況によってはこんなこともあるということ。シミュレーションなんて,限られた条件の下で実験するわけで,実験条件が不適切だといわれても,ネエ。

for ループを使うやり方は列数に比例して計算時間がかかる。行数が 8000 程度以下なら colMeans の方が速い。10000 程度以上になると逆転する。

as.matrix がボトルネックだということなんだから,そもそも matrix で用が足りるときには,read.table などでデータフレームに読み込まない。あるいは読んでも,すぐさま行列にして,必要なら save でもしておいて,いつも行列を使う(二度と read.table しない)と良いと言うこと。list (data frame) は便利だけど高くつく。
しかし,ああだこうだといっても,あれだけの計算をして計算時間は 1 秒未満だということ。めくじらたてるこたあない。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村