加速Roxygen

11
在一个庞大的包上运行 R CMD roxygen 可能需要相当长的时间。显然这很低效,因为它会扫描所有文件,而不管自从上次 roxygen 调用以来是否更改了文件。
有什么技巧可以加快速度吗?
1个回答

12

Roxygen2 > 3.0.0的速度大幅提升,不再需要缓存。


在我的本地版本中,我有:

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

}

我认为这些是您需要的唯一更改,但我不确定。它使roxygen加速了一个数量级。


你的 Roxygen 分支在 GitHub 上可用吗? - Sharpie
1
还没有 - 我仍然希望roxygen开发能够复苏。 - hadley
1
不妨将其发布在一个已禁用的问题跟踪器上,并附上免责声明,说明您并非维护者,并引导用户前往Roxygen邮件列表。这样可以增加流量,从而激励开发工作。 - Sharpie
谢谢,我下载了你的roxygen版本,确实快了很多。 - Dr G

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接