【R語言】data.frame與data.table的效能比較
阿新 • • 發佈:2018-12-20
測試案例說明
- 總資料量為6000條。平均的分佈在20個data.frame/data.table變數中。
- 這20個變數儲存在list中,以1:20表示。
- 將20個變數合併成一個。
- 資料格式一致。
- 用df表示data.frame。
- 用dt表示data.table。
- 無特殊說明,均為100次迴圈操作的結果。時間為平均耗時。
操作結果
說明:
- 若耗時處於同一量級或比較接近,如11.8,12.8,13.4等,視為同一水平,用同一資料表示。
- 資料來源: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重新開闢記憶體塊操作要快很多,也節省記憶體。