对于某些网络服务,我需要尽可能地加快按需 ggplot2 绘图。随着 memoise 的引入,绘图函数会自动引入一些缓存,使第二个绘图明显快于第一个绘图。但是,我的 Web 服务每个 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