R.cacheパッケージのようなものが存在するが、ハード ドライブではなく RAM で動作するものがあるのだろうか?
または、R.cacheパッケージにハードドライブを使用していると信じ込ませるために、 R.cacheパッケージにハッキングの可能性がありますが、キャッシュをRAMのある種の仮想ドライブに保存しますか?
私もこの素晴らしい質問を見つけてmemoiseパッケージを試しましたが、RAM 上では動作しますが、私の問題では R.cache よりも遅いことが判明しました。
おそらく、RAM ディスクを作成し、そのドライブをキャッシュの保存先として指定することができますR.cache
。
カスタムキャッシュエンジンを備えたpanderのevals
関数を試してみることができます。
詳細については上記のリンクを参照してください。
evalsOptions('cache', TRUE)
デフォルト値)eval
結果をキャッシュする秒単位の時間:(evalsOptions('cache.time', 0.1)
デフォルト値)disk
対R environment
):(evalsOptions('cache.mode', 'environment')
デフォルト値)簡単な例:
> library(pander)
> # first time run
> system.time(evals('sapply(rep(mtcars$hp, 1e3), mean)'))
user system elapsed
12.269 0.020 12.414
> # second call
> system.time(evals('sapply(rep(mtcars$hp, 1e3), mean)'))
user system elapsed
0.003 0.000 0.003
> # check results any time without recomputing those
> str(evals('sapply(rep(mtcars$hp, 1e3), mean)')[[1]]$result)
num [1:32000] 110 110 93 110 175 105 245 62 95 123 ...
> str(evals('sapply(rep(mtcars$hp, 1e3), mean)'))
List of 1
$ :List of 6
..$ src : chr "sapply(rep(mtcars$hp, 1000), mean)"
..$ result: num [1:32000] 110 110 93 110 175 105 245 62 95 123 ...
..$ output: chr [1:1778] " [1] 110 110 93 110 175 105 245 62 95 123 123 180 180 180 205 215 230 66" " [19] 52 65 97 150 150 245 175 66 91 113 264 175 335 109 110 110 93 110" " [37] 175 105 245 62 95 123 123 180 180 180 205 215 230 66 52 65 97 150" " [55] 150 245 175 66 91 113 264 175 335 109 110 110 93 110 175 105 245 62" ...
..$ type : chr "numeric"
..$ msg :List of 3
.. ..$ messages: NULL
.. ..$ warnings: NULL
.. ..$ errors : NULL
..$ stdout: NULL
..- attr(*, "class")= chr "evals"