【问题标题】:Pre-caching ggplot2 output using memoise for use in a web service使用 memoise 预缓存 ggplot2 输出以用于 Web 服务
【发布时间】:2012-02-20 05:09:07
【问题描述】:

对于某些网络服务,我需要尽可能加快按需 ggplot2 绘图。随着 memoise 的引入,绘图功能会自动引入一些缓存,使第二个绘图明显快于第一个绘图。然而,我的网络服务每个 R 会话只绘制 1 个绘图,因此默认情况下这没有帮助。

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

一个例子:

> 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

【问题讨论】:

  • 我编辑了你的标题,我把它解释为你在寻找一个在它使用 memoise 之前的 ggplot2 版本(pre-memoise ggplot2)。我希望这反映了您的意图,如果没有,请随时更改。
  • 我很想知道您是否看到 memoise()ing 一些 g <- ggplot()... 函数带来的任何速度改进。我做了同样的事情(一个会话中),但在绘图速度方面几乎没有任何改进。也许我做错了......

标签: r ggplot2 memoization cran


【解决方案1】:

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

【讨论】:

猜你喜欢
  • 2019-04-21
  • 1970-01-01
  • 2018-06-06
  • 2011-06-28
  • 2021-05-26
  • 2012-08-15
  • 1970-01-01
  • 1970-01-01
  • 2011-11-06
相关资源
最近更新 更多