使此过程更加耗费处理器并减少内存密集

时间:2012-03-02 13:47:24

标签: r performance workload

此问题是对Count days per year的跟进。

我做了Dirk建议的庞大data.frame。我的命令看起来像这样:

dateSeq <- function(df) {
  res <- seq(as.Date(df["begin"]), as.Date(df["end"]), by = "1 day")
  format(res, "%Y")
}

dataFrame$seq <- apply(dataFrame, 1, dateSeq)
dataFrame_years <- do.call("c", dataFrame[["seq"]])

rm(dataFrame)
gc()
gc()

dataFrame_tab <- table(dataFrame_years)

现在,这些命令填满了我的8 GB Ram和2 GB交换空间。与此同时,我的处理器很无聊,处理器负载可能达到15%。

此外,我的电脑需要很长时间才能满足我的“欲望”。 我可以将一些工作转移到CPU上,并将我的Ram放松一点吗?

1 个答案:

答案 0 :(得分:2)

实际上,所提到的解决方案是难以忘怀的内存。试试这个:

begin <- as.POSIXlt("2007-05-20", tz = "GMT")
end <- as.POSIXlt("2010-06-13", tz = "GMT")

year <- seq(begin$year, end$year) + 1900
year.begin <- as.POSIXlt(paste(year, "01", "01", sep="-"), tz="GMT")
year.begin[1] <- begin
year.end <- as.POSIXlt(paste(year, "12", "31", sep="-"), tz="GMT")
year.end[length(year.end)] <- end
days <- as.numeric(year.end - year.begin) + 1
cbind(year, days)