A collection of benchmark executions from the benchmarks directory.
Executed on a personal machine:
MacBook Pro (16-inch, 2019)
Processor 2.4 GHz 8-Core Intel Core i9
Memory 32 GB 2667 MHz DDR4
Run these locally using npm run benchmarks
with Node v16
The
with-agent
variants use anew http.Agent({ keepAlive: true })
to share a network connection similarly to what Undici does to make the comparison more fair.
┌─────────┬─────────────────────────────┬─────────────────────────────┬────────────────┐
│ (index) │ Entity │ Total Time │ Percent Change │
├─────────┼─────────────────────────────┼─────────────────────────────┼────────────────┤
│ 0 │ 'undici-fetch' │ '568048745ns (568.049ms)' │ '0.000%' │
│ 1 │ 'node-fetch' │ '1185432098ns (1185.432ms)' │ '108.685%' │
│ 2 │ 'node-fetch_with-agent' │ '660524832ns (660.525ms)' │ '16.280%' │
│ 3 │ 'minipass-fetch' │ '1200155342ns (1200.155ms)' │ '111.277%' │
│ 4 │ 'minipass-fetch_with-agent' │ '713356817ns (713.357ms)' │ '25.580%' │
│ 5 │ 'axios' │ '1223434520ns (1223.435ms)' │ '115.375%' │
│ 6 │ 'axios_with-agent' │ '678067701ns (678.068ms)' │ '19.368%' │
└─────────┴─────────────────────────────┴─────────────────────────────┴────────────────┘
append
┌─────────┬────────────────┬──────────────────────┬────────────────┐
│ (index) │ Entity │ Total Time │ Percent Change │
├─────────┼────────────────┼──────────────────────┼────────────────┤
│ 0 │ 'undici-fetch' │ '923173ns (0.923ms)' │ '0.000%' │
│ 1 │ 'node-fetch' │ '720877ns (0.721ms)' │ '-21.913%' │
│ 2 │ 'mapHeaders' │ '658198ns (0.658ms)' │ '-28.703%' │
└─────────┴────────────────┴──────────────────────┴────────────────┘
set
┌─────────┬────────────────┬───────────────────────┬────────────────┐
│ (index) │ Entity │ Total Time │ Percent Change │
├─────────┼────────────────┼───────────────────────┼────────────────┤
│ 0 │ 'undici-fetch' │ '893406ns (0.893ms)' │ '0.000%' │
│ 1 │ 'node-fetch' │ '1670204ns (1.670ms)' │ '86.948%' │
│ 2 │ 'mapHeaders' │ '755423ns (0.755ms)' │ '-15.445%' │
└─────────┴────────────────┴───────────────────────┴────────────────┘
has
┌─────────┬────────────────┬──────────────────────┬────────────────┐
│ (index) │ Entity │ Total Time │ Percent Change │
├─────────┼────────────────┼──────────────────────┼────────────────┤
│ 0 │ 'undici-fetch' │ '351202ns (0.351ms)' │ '0.000%' │
│ 1 │ 'node-fetch' │ '626382ns (0.626ms)' │ '78.354%' │
│ 2 │ 'mapHeaders' │ '330695ns (0.331ms)' │ '-5.839%' │
└─────────┴────────────────┴──────────────────────┴────────────────┘
get
┌─────────┬────────────────┬──────────────────────┬────────────────┐
│ (index) │ Entity │ Total Time │ Percent Change │
├─────────┼────────────────┼──────────────────────┼────────────────┤
│ 0 │ 'undici-fetch' │ '212254ns (0.212ms)' │ '0.000%' │
│ 1 │ 'node-fetch' │ '630397ns (0.630ms)' │ '197.001%' │
│ 2 │ 'mapHeaders' │ '338389ns (0.338ms)' │ '59.426%' │
└─────────┴────────────────┴──────────────────────┴────────────────┘
delete
┌─────────┬────────────────┬──────────────────────┬────────────────┐
│ (index) │ Entity │ Total Time │ Percent Change │
├─────────┼────────────────┼──────────────────────┼────────────────┤
│ 0 │ 'undici-fetch' │ '302424ns (0.302ms)' │ '0.000%' │
│ 1 │ 'node-fetch' │ '373459ns (0.373ms)' │ '23.489%' │
│ 2 │ 'mapHeaders' │ '331659ns (0.332ms)' │ '9.667%' │
└─────────┴────────────────┴──────────────────────┴────────────────┘
iterate
┌─────────┬────────────────┬───────────────────────┬────────────────┐
│ (index) │ Entity │ Total Time │ Percent Change │
├─────────┼────────────────┼───────────────────────┼────────────────┤
│ 0 │ 'undici-fetch' │ '146656ns (0.147ms)' │ '0.000%' │
│ 1 │ 'node-fetch' │ '3198234ns (3.198ms)' │ '2080.773%' │
│ 2 │ 'mapHeaders' │ '217569ns (0.218ms)' │ '48.353%' │
└─────────┴────────────────┴───────────────────────┴────────────────┘
forEach
┌─────────┬────────────────┬───────────────────────┬────────────────┐
│ (index) │ Entity │ Total Time │ Percent Change │
├─────────┼────────────────┼───────────────────────┼────────────────┤
│ 0 │ 'undici-fetch' │ '192350ns (0.192ms)' │ '0.000%' │
│ 1 │ 'node-fetch' │ '2750348ns (2.750ms)' │ '1329.866%' │
│ 2 │ 'mapHeaders' │ '201654ns (0.202ms)' │ '4.837%' │
└─────────┴────────────────┴───────────────────────┴────────────────┘
entries
┌─────────┬────────────────┬───────────────────────┬────────────────┐
│ (index) │ Entity │ Total Time │ Percent Change │
├─────────┼────────────────┼───────────────────────┼────────────────┤
│ 0 │ 'undici-fetch' │ '162705ns (0.163ms)' │ '0.000%' │
│ 1 │ 'node-fetch' │ '2837062ns (2.837ms)' │ '1643.685%' │
│ 2 │ 'mapHeaders' │ '161230ns (0.161ms)' │ '-0.907%' │
└─────────┴────────────────┴───────────────────────┴────────────────┘
keys
┌─────────┬────────────────┬───────────────────────┬────────────────┐
│ (index) │ Entity │ Total Time │ Percent Change │
├─────────┼────────────────┼───────────────────────┼────────────────┤
│ 0 │ 'undici-fetch' │ '183481ns (0.183ms)' │ '0.000%' │
│ 1 │ 'node-fetch' │ '1837006ns (1.837ms)' │ '901.197%' │
│ 2 │ 'mapHeaders' │ '211425ns (0.211ms)' │ '15.230%' │
└─────────┴────────────────┴───────────────────────┴────────────────┘
values
┌─────────┬────────────────┬───────────────────────┬────────────────┐
│ (index) │ Entity │ Total Time │ Percent Change │
├─────────┼────────────────┼───────────────────────┼────────────────┤
│ 0 │ 'undici-fetch' │ '148036ns (0.148ms)' │ '0.000%' │
│ 1 │ 'node-fetch' │ '2271681ns (2.272ms)' │ '1434.546%' │
│ 2 │ 'mapHeaders' │ '229189ns (0.229ms)' │ '54.820%' │
└─────────┴────────────────┴───────────────────────┴────────────────┘