2011-01-20 6 views
11

Correr R CMD roxygen en un paquete grande puede llevar bastante tiempo. Es obviamente ineficiente y pasa por todo independientemente de si un archivo ha cambiado desde la última llamada de roxygen.Acelerando roxygen

¿Algún consejo sobre cómo acelerar las cosas?

Respuesta

12

Roxygen2> 3.0.0 es sustancialmente más rápido, y ya no necesita el almacenamiento en caché.


En mi versión local de roxygen, que tienen:

library(memoize) 
cached.parse.ref <- memoize(parse.ref) 
cached.parse.srcfile <- memoize(parse.srcfile) 

parse.file <- function(file) { 
    srcfile <- srcfile(file) 

    res <- try(cached.parse.srcfile(srcfile), silent = TRUE) 
    if (inherits(res, "try-error")) { 
    stop("Can't pass", file, "\n", res, call. = FALSE) 
    } 
    res 
} 

parse.srcfile <- function(srcfile) { 
    srcrefs <- attributes(parse(srcfile$filename, 
           srcfile=srcfile))$srcref 
    if (length(srcrefs) > 0) 
    parse.refs(zip.list(prerefs(srcfile, srcrefs), srcrefs)) 
    else 
    nil 

} 

Creo que esos son los únicos cambios que necesita, pero no estoy seguro. Se acelera roxygen en un orden de magnitud.

+0

¿Su tenedor de Roxygen está disponible en GitHub? – Sharpie

+1

Aún no - Sigo esperando que el desarrollo de roxygen vuelva a la vida. – hadley

+1

No estaría de más publicarlo con un rastreador de problemas desactivado y una cláusula de exención de responsabilidad que establezca que usted no es el mantenedor y dirige a los usuarios a la lista de correo de Roxygen. El aumento del tráfico podría motivar los esfuerzos de desarrollo. – Sharpie

Cuestiones relacionadas