2012-01-27 6 views
5

いくつかのWebサービスでは、ggplot2プロットを可能な限り高速化する必要があります。 memoiseが導入されると、プロット関数にキャッシングが自動的に導入され、2番目のプロットが最初のプロットより大幅に高速になります。しかし、私のWebサービスはRセッションごとに1つのプロットしか描画しないので、これはデフォルトでは役に立ちません。ウェブサービスで使用するmemoiseを使用したggplot2出力のプリペイド

プリキャッシュ(例えば、実際の要求の前にいくつかの計算を行うなど)、または一般的な呼び出し+出力のために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 
+0

私はあなたのタイトルを編集しましたが、私はmemoise(pre-memoise ggplot2)を使用する前のggplot2バージョンを探していると解釈しました。私はこれがあなたの意図を反映していると思います。 –

+0

いくつかの 'g < - ggplot()...'関数を使って 'memoise()'の速度向上が見られたのかどうか不思議です。私は同じことをしましたが(* 1回のセッション内で)、描画速度の改善はほとんど見られませんでした。 私は間違っているかもしれません... – maxheld

答えて

4

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

+0

'memoise'の[開発版](https://github.com/hadley/memoise/releases)に' cache_filesystem'オプション付きの永続キャッシュが追加されました。 –

関連する問題