私はいくつかの関連する質問をチェックしました
最も評価の高い回答の特定の部分を引用しています
それは、何をしたいか、およびデータをさらに処理する方法によって異なります。いずれにせよ、常に同じデータセットが必要な場合、バイナリ R オブジェクトからの読み込みは常に高速になります。ここでの制限速度は、ハードドライブの速度であり、 R ではありません。バイナリ形式はワークスペース内のデータフレームの内部表現であるため、変換はもう必要ありません
本当にそう思いました。しかし、人生は実験です。igraph オブジェクトを含む 1.22 GB のファイルがあります。そうは言っても、ここで見つけたものはオブジェクトクラスに関連しているとは思いません。これは主に、「ライブラリ」を呼び出す前でも load('file.RData') できるためです。
このサーバーのディスクは非常に優れています。読書時間をメモリにチェックできるように
user@machine data$ pv mygraph.RData > /dev/null
1.22GB 0:00:03 [ 384MB/s] [==================================>] 100% `
ただし、Rからこのデータをロードすると
>system.time(load('mygraph.RData'))
user system elapsed
178.533 16.490 202.662
したがって、*.RData ファイルのロードはディスク制限より 60 倍遅いようです。これは、R が「ロード」中に実際に何かを行うことを意味するはずです。
異なるハードウェアで異なる R バージョンを使用しても同じ感覚が得られました。今回はベンチマークを行うのに忍耐が必要でした (主な理由は、このようにクールなディスク ストレージでは、ロードに実際にどれくらいの時間がかかるかということでした)。
これを克服する方法についてのアイデアはありますか?
答えのアイデアの後
save(g,file="test.RData",compress=F)
以前は 1.22GB だったファイルが 3.1GB になりました。私の場合、圧縮解除の読み込みは少し高速です (ディスクは私のボトルネックではありません)。
> system.time(load('test.RData'))
user system elapsed
126.254 2.701 128.974
圧縮されていないファイルをメモリに読み込むのに 12 秒ほどかかるため、ほとんどの時間が環境の設定に費やされていることがわかります
RDS の結果が返ってきます。興味深いですね
約束通り、ここにいます
system.time(saveRDS(g,file="test2.RData",compress=F))
user system elapsed
7.714 2.820 18.112
そして、おそらくsave
オブジェクト名も保存するため、md5sumは異なりますが、非圧縮の「保存」と同じように3.1GBを取得します
今読んでいる...
> system.time(a<-readRDS('test2.RData'))
user system elapsed
41.902 2.166 44.077
したがって、両方のアイデア (圧縮解除と RDS) を組み合わせると、5 倍速く実行されます。貢献していただきありがとうございます。