2011-01-20 2 views
11

Запуск R CMD roxygen на большой упаковке может занять довольно много времени. Это явно неэффективно, так как оно проходит через все, независимо от того, изменился ли файл с момента последнего вызова roxygen.Ускорение roxygen

Любые советы о том, как ускорить процесс?

ответ

12

Roxygen2> 3.0.0 значительно быстрее и больше не нуждается в кешировании.


В моей локальной версии roxygen, у меня есть:

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 

} 

Я думаю, что это единственные изменения, которые нужны, но я не уверен. Он ускоряет роксиген на порядок.

+0

Является ли ваша вилка Roxygen доступной на GitHub? – Sharpie

+1

Пока нет - я все еще надеюсь, что развитие кислорода будет возвращаться к жизни. – hadley

+1

Не помешало опубликовать его с отключенным трекером проблем и оговоркой о том, что вы не являетесь сопровождающим и направляет пользователей в список рассылки Roxygen. Увеличение трафика может стимулировать усилия в области развития. – Sharpie

Смежные вопросы