Origin issue: ‣

First analysis: https://github.com/nodejs/undici/issues/1203#issuecomment-1100969210

Machine Info

Architecture:                    x86_64
CPU op-mode(s):                  32-bit, 64-bit
Byte Order:                      Little Endian
Address sizes:                   46 bits physical, 48 bits virtual
CPU(s):                          2
On-line CPU(s) list:             0,1
Thread(s) per core:              2
Core(s) per socket:              1
Socket(s):                       1
NUMA node(s):                    1
Vendor ID:                       GenuineIntel
CPU family:                      6
Model:                           106
Model name:                      Intel(R) Xeon(R) Platinum 8370C CPU @ 2.80GHz
Stepping:                        6
CPU MHz:                         2793.437
BogoMIPS:                        5586.87
Virtualization:                  VT-x
Hypervisor vendor:               Microsoft
Virtualization type:             full
L1d cache:                       48 KiB
L1i cache:                       32 KiB
L2 cache:                        1.3 MiB
L3 cache:                        48 MiB

Difference between v1 and v2

TL;DR: No performance improvement.

Approaches

Working Branch: fetch-analysis

Fetch issues

As an abstract, all the points raised in the first analysis are still valid (WebStreams, AbortController, TCP Retransmission).

Apart from WebStreams, it seems the next issue of fetch is memory usage. Garbage Collection uses a considerable amount of time.

Undici.Fetch - Profiling

Undici.Fetch - Profiling

Undici.Request - Profiling

Undici.Request - Profiling

undici.fetch creates way more Promises for a simple request than undici.request

fetch

fetch