我们正在使用官员自动生成报告(约100页,其中包含许多图形和表格)。如果我们分别运行各章,则每个文件的运行速度都非常快,但是同时运行所有12个文件时最多需要一个小时。我们假设所有结果都存储在导致问题的工作存储器中。在每章之后打印文档或使用rm()
删除中间不需要的所有对象都不会影响处理时间。
任何可以“清除”工作内存或内存的想法都可以做。加快过程?
这是我们代码的摘要:
doc_output = file.path("C:/Doc/report.docx")
doc = read_docx(path = doc_template)
source(paste0("Chapter-1_", year, ".R"))
print(doc, target = doc_output)
rm(list = ls()[! ls() %in% c("year", "data_all", "data", "doc_template", "doc_output", "doc")])
gc()
source(paste0("Chapter-2_", year, ".R"))
print(doc, target = doc_output)
rm(list = ls()[! ls() %in% c("year", "data_all", "data", "doc_template", "doc_output", "doc")])
gc()
[...]
source(paste0("Chapter-11_", year, ".R"))
print(doc, target = doc_output)
rm(list = ls()[! ls() %in% c("year", "data_all", "data", "doc_template", "doc_output", "doc")])
gc()