对于某些web服务,我需要尽可能加快按需绘制ggplot2图的速度。随着memoise的引入,绘图函数中自动引入了一些缓存,使得第二个绘图比第一个绘图快得多。然而,我的web服务在每个R会话中只绘制一张图,所以这在默认情况下没有帮助。
我想知道做预缓存是否明智/可能/有用(例如,在实际请求之前在加载时做一些计算),或者将内存缓存保存/加载到磁盘上,以便进行常见调用+输出。
举个例子:
> library(ggplot2);
> pdf(tempfile());
> system.time(print(qplot(speed, dist, color=speed, data=cars, geom=c("point", "smooth"))));
user system elapsed
0.496 0.008 0.512
> system.time(print(qplot(speed, dist, color=speed, data=cars, geom=c("point", "smooth"))));
user system elapsed
0.312 0.004 0.322发布于 2012-01-28 03:47:39
AFAIK,memoise包只支持会话内缓存。如果退出R会话,则会丢失缓存。我不确定cacheSweave/knitr模型是否对您的web服务有帮助,但我相信您必须像这两个包一样将缓存的结果写入磁盘。如果运行相同的代码(由MD5验证),则只需加载缓存。你可以提供一个例子,这样我就可以更好地了解这个问题。
https://stackoverflow.com/questions/9029439
复制相似问题