Skip to content
This repository has been archived by the owner on Aug 13, 2021. It is now read-only.

Latest commit

 

History

History
116 lines (107 loc) · 11.3 KB

benchmarks.md

File metadata and controls

116 lines (107 loc) · 11.3 KB

Benchmarks

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

fetch()

The with-agent variants use a new 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%'    │
└─────────┴─────────────────────────────┴─────────────────────────────┴────────────────┘

Headers

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%'    │
└─────────┴────────────────┴───────────────────────┴────────────────┘