【问题标题】:Fastest way to save/load data.table保存/加载 data.table 的最快方法
【发布时间】:2015-11-21 04:59:25
【问题描述】:

我实际上想做的是使用最快的可用方法来存储data.tables 以供进一步处理。

类似的东西:

  1. 从 CSV/RDS 读取原始数据。
  2. 将其转换为data.table
  3. 将其保存为针对重读优化的格式(RDS 似乎不适用于 data.table,对吗?还有其他二进制选项吗?)
  4. 继续处理第 3 步中的文件,一遍又一遍地将其直接读取为 data.table,进行切片、分组、绘图……

第 3 步的最佳选择是什么?

【问题讨论】:

  • 你不喜欢save()
  • 我使用save()compress = FALSE。这是相当快的。
  • @Arthur 好吧,不是我不喜欢保存,而是All R platforms use the XDR (bigendian) representation of C ints and doubles in binary save-d files, and these are portable across all R platforms。因此,它显然涉及我正在使用的最常见 x64 平台上的输入/输出转换。所以想知道这里有没有更好的东西,也许有人已经检查了所有选项并进行了一些测量。
  • 前段时间我运行了基准测试,结果表明 sqlite 是最快的接口。我比较了 rds、db 和 csv。没有链接,但可以在 github 上的 data.table 问题中找到。

标签: r data.table


【解决方案1】:

好的,这里对我正在使用的特定数据集进行一些测量。原来是RDS,读取需要60+秒。

之后 DT 被保存为内部 XDR 以及 SQLite db,均未压缩。

  1. save()/load() 对最快,11.7-11.8 秒加载

  2. SQLite (dbReadTable) 非常接近,12.0-12.1 秒。使用 DB 的文件大小大约小 30%,所以我可以想象 SQLite 比 save()/load() 更快的情况。

现在 save()/load() 适合我,它也保留类

【讨论】:

    猜你喜欢
    • 2013-08-10
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    • 2011-10-17
    • 2013-02-08
    • 2011-09-29
    相关资源
    最近更新 更多