类似于R.cache但在RAM中
只是想知道是否存在类似于R.cache的软件包,但它不使用硬盘,而是使用RAM 或者R中可能存在一些黑客攻击,使R.cache软件包相信它使用硬盘,但将其缓存存储到RAM中的某种虚拟驱动器 我也发现了这个很棒的并且尝试过的memoise软件包,但是对于我的问题,它比R.cache慢,尽管它在RAM上工作。也许您可以制作一个并指定该驱动器作为缓存的存储目标,使用类似于R.cache但在RAM中,r,R,只是想知道是否存在类似于R.cache的软件包,但它不使用硬盘,而是使用RAM 或者R中可能存在一些黑客攻击,使R.cache软件包相信它使用硬盘,但将其缓存存储到RAM中的某种虚拟驱动器 我也发现了这个很棒的并且尝试过的memoise软件包,但是对于我的问题,它比R.cache慢,尽管它在RAM上工作。也许您可以制作一个并指定该驱动器作为缓存的存储目标,使用R.cache您可以尝试使用带有引擎的evals函数 有关详细信息,请参见上面的链接,简而言之: 启用缓存:evalsOptions('
R.cache
您可以尝试使用带有引擎的evals
函数
有关详细信息,请参见上面的链接,简而言之:
- 启用缓存:
(默认值)evalsOptions('cache',TRUE)
- 您可以设置缓存结果的最小时间(
秒):eval
(默认值)evalsOptions('cache.time',0.1)
- 指定要存储缓存值和哈希值的位置(
vs.Rdisk
):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"
+1--OP没有告诉我们他使用什么操作系统,但这可能是目前为止最好的选择。谢谢Alex。我尝试了三种不同的RAM磁盘程序。仅在其中一项上实现了性能改进。尽管如此,只有25%的改善,而我预计会有80%左右的改善。看起来对我来说最好的选择是为我试图解决的问题编写自己的自定义缓存。谢谢,我肯定也会尝试。