2012-01-27 10 views
5

Para algunos servicios web, necesito acelerar ggplot2 en la medida de lo posible. Con la introducción de memoise, parte del caché se introduce automáticamente en las funciones de trazado, lo que hace que el segundo trazado sea significativamente más rápido que el primero. Sin embargo, mi servicio web solo dibuja 1 gráfico por sesión R, por lo que esto no ayuda por defecto.Salida ggplot2 previa al almacenamiento en caché utilizando memoise para su uso en un servicio web

Me preguntaba si sería prudente/posible/útil hacer precaching (por ejemplo, hacer algunos cálculos antes de la solicitud real), o guardar/cargar memorias caché de memoria en el disco para llamadas comunes + salida.

Un ejemplo:

> 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

He editado su título, lo interpreté como que buscaba una versión de ggplot2 que era anterior a la que utilizaba memoise (pre-memoise ggplot2). Espero que esto refleje tu intención, y no dudes en volver a cambiarla si no es así. –

+0

Tengo curiosidad por ver si ha visto alguna mejora de velocidad mediante 'memoise()' ing alguna función 'g <- ggplot() ...'. Hice lo mismo (* dentro de * una sesión), pero apenas vi mejoras en la velocidad de trazado. Tal vez lo estoy haciendo mal ... – maxheld

Respuesta

4

yo sepa, el paquete memoise sólo es compatible con la memoria caché durante la sesión. Si sale de una sesión R, pierde el caché. No estoy seguro de si el modelo cacheSweave/knitr ayuda con su servicio web, pero creo que debe escribir los resultados en caché en el disco de todos modos, como estos dos paquetes. Si se ejecuta el mismo código (verifique por MD5), simplemente carga la caché. Puede dar un ejemplo para que pueda conocer mejor el problema.

+0

La [versión de desarrollo] (https://github.com/hadley/memoise/releases) de 'memoise' ahora tiene caché persistente con la opción' cache_filesystem'. –

Cuestiones relacionadas