AB
Size: a a a
AB
АК
doc1[1:nrow(doc1),list(list_col=as.character(unlist(list_col))),by=list(attempt_id)]->doc2
doc1[,list(list_col=as.character(unlist(list_col))),by=list(attempt_id)]->doc2
bench::mark(Результат:
v1 = doc1[1:nrow(doc1),list(list_col=as.character(unlist(list_col))),by=list(attempt_id)],
v2 = doc1[,list(list_col=as.character(unlist(list_col))),by=list(attempt_id)],
min_iterations = 100
)
expression min median `itr/sec` mem_alloc `gc/sec` n_itr n_gc
<bch:expr> <bch> <bch:> <dbl> <bch:byt> <dbl> <int> <dbl>
1 v1 332ms 358ms 2.67 NA 6.51 100 244
2 v2 325ms 348ms 2.74 NA 6.66 100 243
АК
bench::mark(Результат:
v1 = doc1[1:nrow(doc1),list(list_col=as.character(unlist(list_col))),by=list(attempt_id)],
v2 = doc1[,list(list_col=as.character(unlist(list_col))),by=list(attempt_id)],
min_iterations = 100
)
expression min median `itr/sec` mem_alloc `gc/sec` n_itr n_gc
<bch:expr> <bch> <bch:> <dbl> <bch:byt> <dbl> <int> <dbl>
1 v1 332ms 358ms 2.67 NA 6.51 100 244
2 v2 325ms 348ms 2.74 NA 6.66 100 243
data.table
включаем опцию verbose
.IS
bench::mark(Результат:
v1 = doc1[1:nrow(doc1),list(list_col=as.character(unlist(list_col))),by=list(attempt_id)],
v2 = doc1[,list(list_col=as.character(unlist(list_col))),by=list(attempt_id)],
min_iterations = 100
)
expression min median `itr/sec` mem_alloc `gc/sec` n_itr n_gc
<bch:expr> <bch> <bch:> <dbl> <bch:byt> <dbl> <int> <dbl>
1 v1 332ms 358ms 2.67 NA 6.51 100 244
2 v2 325ms 348ms 2.74 NA 6.66 100 243
АК
data.table
. Среди прочего стоит отметить имплицитное построение индексов при первом обращении к столбцу. Есть и другие нюансы.AS
A
a
A
a
knitr::include_graphics()
A
A
a
A
АК
A
A
A
A