2012-01-27 7 views
5

W przypadku niektórych usług internetowych muszę przyspieszyć działania na wykresach ggplot2 w miarę możliwości. Wraz z wprowadzeniem memoise, buforowanie jest automatycznie wprowadzane do funkcji kreślenia, dzięki czemu drugi wykres jest znacznie szybszy niż pierwszy. Jednak moja usługa internetowa rysuje tylko 1 działkę na sesję R, więc to nie pomaga domyślnie.Wstępne buforowanie danych wyjściowych ggplot2 przy użyciu memoise do użytku w serwisie WWW

Zastanawiam się, czy byłoby rozsądnie/możliwe/użyteczne wykonanie precaching (np. Wykonanie niektórych obliczeń onload, przed faktycznym żądaniem) lub zapisanie/załadowanie pamięci podręcznych memorial na dysk dla wspólnych wywołań + danych wyjściowych.

Przykład:

> 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

Edytowałem twój tytuł, interpretowałem go tak, jakbyś szukał wersji ggplot2, która była wcześniejsza niż czas, w którym używałeś memoise (pre-memoise ggplot2). Mam nadzieję, że to odzwierciedla twoją intencję i możesz je zmienić, jeśli nie. –

+0

Ciekawi mnie, czy zauważyłeś jakąkolwiek poprawę prędkości dzięki 'memoise()' jakiejś funkcji 'g <- ggplot() ...'. Zrobiłem to samo (* w ciągu * jednej sesji), ale prawie nie zauważyłem żadnej poprawy szybkości kreślenia. Może robię to źle ... – maxheld

Odpowiedz

4

AFAIK, pakiet memoise obsługuje tylko w sesji cache. Jeśli zakończysz sesję R, utracisz pamięć podręczną. Nie jestem pewien, czy model cacheSweave/knitr pomaga w twoim serwisie sieciowym, ale uważam, że musisz zapisać wyniki z pamięci podręcznej na dysku tak jak te dwa pakiety. Jeśli ten sam kod jest uruchamiany (weryfikacja przez MD5), wystarczy załadować pamięć podręczną. Możesz podać przykład, aby lepiej poznać problem.

+0

[Wersja rozwojowa] (https://github.com/hadley/memoise/releases) "memoise" ma teraz trwałą pamięć podręczną z opcją 'cache_filesystem'. –

Powiązane problemy