首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用memoise预缓存ggplot2输出,以便在web服务中使用

使用memoise预缓存ggplot2输出,以便在web服务中使用
EN

Stack Overflow用户
提问于 2012-01-27 13:44:53
回答 1查看 297关注 0票数 5

对于某些web服务,我需要尽可能加快按需绘制ggplot2图的速度。随着memoise的引入,绘图函数中自动引入了一些缓存,使得第二个绘图比第一个绘图快得多。然而,我的web服务在每个R会话中只绘制一张图,所以这在默认情况下没有帮助。

我想知道做预缓存是否明智/可能/有用(例如,在实际请求之前在加载时做一些计算),或者将内存缓存保存/加载到磁盘上,以便进行常见调用+输出。

举个例子:

代码语言:javascript
复制
> 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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-28 03:47:39

AFAIK,memoise包只支持会话内缓存。如果退出R会话,则会丢失缓存。我不确定cacheSweave/knitr模型是否对您的web服务有帮助,但我相信您必须像这两个包一样将缓存的结果写入磁盘。如果运行相同的代码(由MD5验证),则只需加载缓存。你可以提供一个例子,这样我就可以更好地了解这个问题。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9029439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档