5

一部の Web サービスでは、オンデマンドの ggplot2 プロットを可能な限り高速化する必要があります。memoise の導入により、一部のキャッシングがプロッティング関数に自動的に導入され、2 番目のプロットが最初のプロットよりも大幅に高速になります。ただし、私の 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
4

1 に答える 1

4

私の知る限り、memoiseパッケージはセッション内キャッシュのみをサポートしています。R セッションを終了すると、キャッシュが失われます。cacheSweave/knitrモデルが Web サービスに役立つかどうかはわかりませんが、この 2 つのパッケージのようにキャッシュされた結果をディスクに書き込む必要があると思います。同じコードが実行される場合 (MD5 で検証)、キャッシュをロードするだけです。私が問題をよりよく知ることができるように、あなたは例を提供するかもしれません。

于 2012-01-27T19:47:39.013 に答える