3

我有一个闪亮的应用程序,需要先加载一个 .RData 文件。.RData 文件只有一个大文件,它有 2800 万行和 25 个变量。由于文件很大,Shiny 页面需要超过 2 分钟才能显示出来。我们可接受的加载时间在 30 秒内。有人对如何加快加载有任何建议吗?

我确实尝试通过 fread 函数(来自 data.table pkg)加载数据,但仍然需要 2 分钟以上才能加载。我猜 load(.RData) 还是比 fread(.csv) 快?

谢谢!

4

1 回答 1

2

不要使用压缩 - 如果你有快速磁盘并且变量是数字的,那么使用未压缩的 RDS 比压缩快得多:

> l = lapply(1:25, function(o) rnorm(28e6))
> names(l) = paste0("V",1:25)
> attr(l,"row.names") = .set_row_names(length(l[[1]]))
> class(l) = "data.frame"
> saveRDS(l, file="data.rds", compress=FALSE)

(新会议)

> system.time(d<-readRDS("data.rds"))
   user  system elapsed 
  6.474   2.091   8.576 
> dim(d)
[1] 28000000       25

也就是说,这对于Rserve 来说似乎是一个很好的用例,您可以在其中预加载数据,因此当用户连接时,数据已经被所有会话加载和共享(假设您没有运行 Windows 服务器)。

于 2015-12-19T04:29:29.430 回答