元データ分析の会社で働いていた人の四方山話スマートフォン用の表示で見る元データ分析の会社で働いていた人の四方山話この広告は、90日以上更新していないブログに表示しています。2010-01-05爆速っぷりを数値で示してみるRこれとこれの続きです。簡単な例を用いてC拡張の爆速ぶりを定量的に評価してみます。条件など大きな行列を用意してやって、その要素の全ての和を求めてやろうという試みですが、以下の3つで比較してみます。forで要素一つ一つにアクセスして和を求めるapplyとsumを組み合わせてベクトルで処理Cに投げるとして、それぞれの関数を用意します。行列は全ての要素が1の正方行列で大きさは関数の引数で決めてやり、行列を作成する部分は全ての関数に加えておきます。実はこの部分を書いている間にプログラムを動かしているので、共用ライブラリの読み込み時間等を考慮すると、実は総合的にはapplyの方が速かったとかいう結果にならないか若干心配です。前回と全く同じ手順でできますが...行列の要素の和を求めるCの関数をmatsum.cとしてこのように書いておきます。matsum.cとして共用ライブラリ、matsum.soを作ってやります。後は、Rから共用ライブラリを呼び出します。record3がそれに相当します。今回は行列の大きさが100×100の場合と、10000×10000の場合で実験しました。record2(10000)の経過時間の結果が若干気になるところではありますが、概ね予想通りの結果が得られました。C拡張最強ですね!!あと、forの多重ループはRにとって鬼門すぎますね!!まとめC拡張は素晴らしい。修論ではforの3重ループが必要だったので、C拡張を利用する恩恵をものすごく受けています。Entriesはてなブログをはじめよう!rindai87さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。