2011-01-20 4 views
11

L'esecuzione di R CMD roxygen su un pacchetto di grandi dimensioni può richiedere parecchio tempo. Ovviamente è inefficiente e passa attraverso tutto indipendentemente dal fatto che un file sia cambiato dall'ultima chiamata di roxygen.Accelerazione del roxy

Qualche consiglio su come velocizzare le cose?

risposta

12

Roxygen2> 3.0.0 è sostanzialmente più veloce e non richiede più la memorizzazione nella cache.


Nella mia versione locale di roxygen, ho:

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 

} 

penso che quelle sono le uniche modifiche che è necessario, ma non sono sicuro. Accelera il roxygen di un ordine di grandezza.

+0

La tua forcella di Roxygen è disponibile su GitHub? – Sharpie

+1

Non ancora - Continuo a sperare che lo sviluppo del roxygen tornerà in vita. – hadley

+1

Non potrei fare male a postarlo con un tracker di problemi disabilitato e un disclaimer che afferma che non sei il manutentore e indirizza gli utenti alla mailing list di Roxygen. L'aumento del traffico potrebbe motivare gli sforzi di sviluppo. – Sharpie