feat: Add QUIC + TCP performance benchmark for dotnet-libp2p
Added a new performance benchmark for dotnet-libp2p, addressing the request in
https://github.com/NethermindEth/dotnet-libp2p/issues/17
This replaces the older TCP-only prototype with a clean implementation that supports both QUIC and TCP, using the official Nethermind.Libp2p packages.
The benchmark follows the structure and JSON output format of the Go reference implementation.
Key Changes
- Added QUIC transport (
/quic-v1) using.WithQuic() - Maintained TCP support (
/tcp) - Unified benchmark for both transports:
-transport quic -transport tcp - Fully cross-platform (Windows requires msquic.dll for QUIC)
- Clean JSON output matching Go implementation
Sample Output
TCP
{"type":"final","timeSeconds":2.632,"uploadBytes":104857600,"downloadBytes":104857600}
UDP/QUIC-v1
{"type":"final","timeSeconds":5.123,"uploadBytes":10485760,"downloadBytes":10485760}
Notes
- Achieves >250 MB/s throughput
- Single-stream benchmark
Hi @dhuseby
Could you please approve the CI/CD workflows for this PR so the tests can run?
Thank you!
@K-21 we don't have the perf tests hooked up at the moment, only the transport interop and hole-punching. I'm working on getting this all fixed up ASAP. I just got the transport interop working again tonight.
(That's why there aren't any pending workflows)
@dhuseby @flcl42 Can you please run the workflow please?