test-plans icon indicating copy to clipboard operation
test-plans copied to clipboard

feat: Add QUIC + TCP performance benchmark for dotnet-libp2p

Open K-21 opened this issue 2 months ago • 3 comments

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

K-21 avatar Nov 03 '25 17:11 K-21

Hi @dhuseby Could you please approve the CI/CD workflows for this PR so the tests can run?
Thank you!

K-21 avatar Nov 04 '25 16:11 K-21

@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.

dhuseby avatar Nov 05 '25 07:11 dhuseby

(That's why there aren't any pending workflows)

dhuseby avatar Nov 05 '25 07:11 dhuseby

@dhuseby @flcl42 Can you please run the workflow please?

K-21 avatar Nov 26 '25 14:11 K-21