Comment évaluer la mémoire et le CPU de traitements long en duckdb/arrow
Auteur·rice
Nicolas Chuche
Date de publication
10 juillet 2025
Quand il s’agit de comparer des façons de faire, l’idéal est de lancer le code dans des outils de benchmarks mais les outils “classiques” de R ne sont pas adaptés à la comparaison de code duckdb et/ou arrow :
tictoc ne retourne que le temps
bench ne voit pas les allocations mémoires de duckdb et arrow
…
Dans mes articles, j’utiliserais régulièrement timemoir écrit exprès pour ce genre de comparatifs :
library(timemoir)test_function <-function(n) { x <-rnorm(n); mean(x)}res <-timemoir(test_function(1.2e7),test_function(4e7),test_function(1e8))
res |> kableExtra::kable()
fname
duration
error
start_mem
max_mem
cpu_user
cpu_sys
test_function(1.2e+07)
0.666
NA
110088
200888
0.619
0.048
test_function(4e+07)
1.979
NA
110088
423768
1.861
0.116
test_function(1e+08)
3.376
NA
109364
892536
3.239
0.136
plot(res)
Cela dit il ne s’agit pas de “vrais” benchmarks rigoureux, bien au delà des objectifs de ce blog mais de comparaisons rapides, destinées à se faire une idée approximative des performances relatives.
Information de session
devtools::session_info(pkgs ="attached")
─ Session info ───────────────────────────────────────────────────────────────
setting value
version R version 4.5.0 (2025-04-11)
os Ubuntu 22.04.5 LTS
system x86_64, linux-gnu
ui X11
language (EN)
collate en_US.UTF-8
ctype en_US.UTF-8
tz Etc/UTC
date 2025-07-14
pandoc 3.7.0.2 @ /usr/bin/ (via rmarkdown)
quarto 1.7.31 @ /usr/local/bin/quarto
─ Packages ───────────────────────────────────────────────────────────────────
package * version date (UTC) lib source
timemoir * 0.7.0.9000 2025-07-14 [1] Github (nbc/timemoir@01b6674)
[1] /usr/local/lib/R/site-library
[2] /usr/local/lib/R/library
* ── Packages attached to the search path.
──────────────────────────────────────────────────────────────────────────────