我正在读取R中的一个大型事件文件,接近200万行,将每行解析为一组事件属性并存储在我的矩阵中。我预先分配了一个巨大的矩阵(200万个事件),从文件中读取一小块,重复并处理它。但是处理文件需要很长时间。我想知道我能做些什么来提高性能。这是我的代码片段:
numEvents <<- 2000000;
eventLog <<- matrix(0,nrow=numEvents,ncol=4);
loadEvents <- function(inputfile) {
con <- file(inputfile, "r", blocking = FALSE)
batch <- 1000
lines <- readLines(con,n=batch)
while(length(lines) > 0 && eventCount <= numEvents) {
for (i in 1:length(lines))
storeEvent(lines[i]); # processes and stores each event in eventlog
lines <- readLines(con,n=batch)
}
close(con);
}
您认为批量大小不是最佳的吗?
非常感谢任何想法。
答案 0 :(得分:0)
也许你的案例是R extension(在C或C ++中)的好例子?但我不太了解R。
答案 1 :(得分:0)
在我的处理过程中发现了这个问题。我使用列表作为地图来包含事件的映射。 List本身并不是哈希映射,因此它可能非常慢。我改变它使用hash()并且性能提高了十倍。感谢。