2011-01-20 32 views
11

Uruchomienie R CMD roxygen na dużym opakowaniu może zająć dużo czasu. Jest to oczywiście nieefektywne, a także przechodzi przez wszystko niezależnie od tego, czy plik zmienił się od ostatniego połączenia roxygen.Przyspieszenie roxygen

Jakieś wskazówki, jak przyspieszyć działanie?

Odpowiedz

12

Roxygen2> 3.0.0 jest znacznie szybszy i nie wymaga już buforowania.


W mojej lokalnej wersji roxygen, mam:

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 

} 

Myślę, że są to jedyne zmiany potrzebne, ale nie jestem pewien. Przyspiesza on ronienie o rząd wielkości.

+0

Czy Twój widelec Roxygena jest dostępny na GitHub? – Sharpie

+1

Jeszcze nie - wciąż mam nadzieję, że rozwój rtęci powróci do życia. – hadley

+1

Nie zaszkodzi opublikować go z wyłączonym trackerem problemów i zastrzeżeniem informującym, że nie jesteś opiekunem i kieruje użytkowników do listy adresowej Roxygen. Zwiększony ruch może motywować działania rozwojowe. – Sharpie