我正在比较不同数据操作包在不同大小的数据集上对某些操作的执行情况。
我生成了一个虚拟数据集(iris x iris 的笛卡尔积。毫无意义,但本质上只是一个 22500 x 10 数据集)。
library(dplyr)
library(data.table)
library(rbenchmark)
iris_big <- merge(x = iris, y = iris, by = NULL)
iris_big_dt <- as.data.table(iris_big) #for data.table
benchmark("Base R" = {
iris_big[base::order("Petal.Width.y")]
},
"dplyr" = {
dplyr::arrange(iris_big,"Petal.Width.y")
},
"data.table" = {
data.table::setorder(iris_big_dt,"Petal.Width.y")
},
replications = 30,
columns = c("test", "replications", "elapsed",
"relative", "user.self", "sys.self"))
Run Code Online (Sandbox Code Playgroud)
输出::
| test | replications |elapsed|...|sys.self|
| -------- | -------------- |---- |---|---|
| Base R | 30 |0.00 |...|0.00|
| data.table | 30 |0.04 |...|0.02| …Run Code Online (Sandbox Code Playgroud)