私は効率的にRにデータを読み込むことを考えていて、load('file.Rdata')
またはreadRDS('file.rds')
が高速であるかどうかをテストするいくつかの方法を試しました。ファイル file.Rdataと file.rdsには同じデータが含まれています。最初はsave(d, 'file.Rdata', compress=F)
で作成され、2番目にはsaveRDS(d, 'file.rds', compress=F)
で作成されます。Rのロード/リードRDSの速度を正しくベンチマークする方法は?
最初に私は関数microbenchmark()
を使用し、出力の最大値について驚いていました。
FIRST TEST:
library(microbenchmark)
microbenchmark(
n <- readRDS('file.rds'),
load('file.Rdata')
)
Unit: milliseconds
expr min lq mean median uq max neval
n <- readRDS('file.rds') 106.5956 109.6457 237.3844 117.8956 141.9921 10934.162 100
load(fl2) 295.0654 301.8162 335.6266 308.3757 319.6965 1915.706 100
最大値が外れ値であるように見えます。
だから私は試してみました: SECOND TESTを:私の疑いを確認した
sapply(1:10, function(x) system.time(n <- readRDS('file.rds'))[3])
elapsed elapsed elapsed elapsed elapsed elapsed elapsed elapsed elapsed elapsed
10.50 0.11 0.11 0.11 0.10 0.11 0.11 0.11 0.12 0.12
sapply(1:10, function(x) system.time(load'flie.Rdata'))[3])
elapsed elapsed elapsed elapsed elapsed elapsed elapsed elapsed elapsed elapsed
1.86 0.29 0.31 0.30 0.30 0.31 0.30 0.29 0.31 0.30
。データを初めて読み込むときは、次の時間よりもはるかに時間がかかります。私はこれにはデータがどのように割り当てられているのか、Rが2回目に読み込まれた場合にはデータを「完全に」読み込む必要がないことが疑わしい。
質問が残っているので、どうすれば現実的なベンチマークテストを行うことができますか?最初のテストから* .rdsファイルを読む方が速いと私は結論づけています。しかし、これは多数のネバールのためにしか成り立たない。 times = 1
を設定すると、* .Rdataを読む方が高速になります(2番目のテストでも示されます)。
ご協力ありがとうございます。
種類は、私がここにまとめしよう[email protected]リストからいくつかの回答を得た