データサイエンティスト上がりのDX参謀・起業家

データサイエンティスト上がりのDX参謀・起業家のブログ。データ分析や事業について。自身はアーティスト、経営者、事業家。

メモ:Rでどれだけのデータが扱えるか?

PCのスペック

windows7 Professional
Core i7 870
16.0G

  • 扱えるデータサイズのチェック
> memory.size()
[1] 16.99
> a <- matrix(1, 50000000, 2)		#50,000,000
> memory.size()
[1] 779.58
> a <- matrix(1, 500000000, 2)		#500,000,000
> memory.size()
[1] 8406.95
> a <- matrix(1, 5000000000, 2)		#5,000,000,000
 以下にエラー matrix(1, 5e+09, 2) : 
   'nrow' の値が不正です(大きすぎるか NA です) 
 追加情報:   警告メッセージ: 
In matrix(1, 5e+09, 2) :  強制変換により NA が生成されました 
> memory.size()
[1] 8406.99

5000万レコード×2変数の行列:約750M
5億レコード×2変数の行列:約7.6G
50億レコード×2変数の行列:扱えない(メモリ的にもサイズ的にも)

Rで扱える要素数は2^32=約40億個なのでそれを超えてるし、メモリも単純計算で80GとかいきそうなのでこのPCではダメっぽい。

  • 5000万レコードのプロットにかかる時間
a <- matrix(1, 50000000, 2)
system.time(plot(a))


通常のR

ユーザー システム 経過
56.41 507.05 568.00

約10分でプロットが描けた


セッティング無しのRevolutionR

ユーザー システム 経過
98.61 524.52 628.70

RevolutionRは3倍速いとの噂だけど、コア数の指定とかちゃんとやらないとパフォーマンスが出ないのかな?


Mac Book Airで通常のR

スペック:OS X Lion、Core i7、4G

ユーザー システム 経過
2051.334 6.558 2050.876

(あれ、ユーザーとシステム逆でメモってしまったかも、、、汗)

トータルで約35分。