Rのファイル読み込み速度比較 csvとrds
Rを使っているときにファイルの読み込み速度はボトルネックになることが多い。 同じスクリプトを何度も繰り返し実行するとき、ファイルの読み込みに膨大な時間がかかると、とてもストレスフルです。
できればデータなんてさっさと読み込んでデータと戯れたい…
そんなあなたにおすすめできるのがrdsというファイル形式でデータを扱うことです。
rdsはRのオブジェクトを保存しておくためのファイル形式。 Rに最適化されているためか、読み込みが早いらしい。
今回はこのrdsとcsvの読み込み速度にどれだけ差があるのか実験します。
実験方法
csvファイルを一度Rで読み込みrdsとして保存したファイル*1 と生のcsvの読み込み速度を比較します。
rdsはreadRDS、csvはfread関数を使って読み込む。
それぞれのファイルサイズは以下のとおり。
ファイル形式 | ファイルサイズ |
---|---|
csv | 839MB |
rds | 155MB |
なんかもうすでに結果が見えてる感じがしてますが、このまま続けます。
読み込みだけなのでスクリプトは非常に単純。
# csvファイル読み込み速度確認用 start = proc.time() system.time(r_data<-fread("csv_file.csv")) end = proc.time() print(end - start)
# rdsファイル読み込み速度確認用 start = proc.time() system.time(r_data<-readRDS("rds_file.rds")) end = proc.time() print(end - start)
実験結果
上記のスクリプトを実行した結果を次の表に示します。
ファイル形式 | user | system | elapsed |
---|---|---|---|
csv | 21.128 | 0.448 | 21.579 |
rds | 5.060 | 0.369 | 5.431 |
表のuser,elapsedを見るとだいたい4倍速くなっていることが分かります。
今までなんとなくで使っていましたが、rds形式を使うのは有効みたいです。 みなさんもぜひお試しあれ。