1. 程式人生 > >【R語言】data.frame與data.table的效能比較

【R語言】data.frame與data.table的效能比較

測試案例說明

  1. 總資料量為6000條。平均的分佈在20個data.frame/data.table變數中。
  2. 這20個變數儲存在list中,以1:20表示。
  3. 將20個變數合併成一個。
  4. 資料格式一致。
  5. 用df表示data.frame。
  6. 用dt表示data.table。
  7. 無特殊說明,均為100次迴圈操作的結果。時間為平均耗時。

操作結果

說明:

  1. 若耗時處於同一量級或比較接近,如11.8,12.8,13.4等,視為同一水平,用同一資料表示。
  2. 資料來源:list(data.frame)與list(data.table)。
操作組合 耗時 說明
1 data.frame + base::rbind 110ms左右) 大部分R使用者
1 data.table + base::rbind 13ms左右 data.table的結構優勢
2 data.frame + dplyr::rbind 13ms左右 應該是演算法優勢
3 data.table + dplyr::rbind 13ms左右 無明顯變化
3 data.frame + data.table::rbindlist 4.2ms左右 估計是先轉成data.table,所以相比多了些耗時
3 data.table + data.table::rbindlist 0.192ms左右 data.table結構優勢,演算法加成爆炸

結論

data.table在處理大量資料時,其直接記憶體操作的特性會比data.frame重新開闢記憶體塊操作要快很多,也節省記憶體。