mozilla / neqo

Neqo, the Mozilla Firefox implementation of QUIC in Rust
https://firefox-source-docs.mozilla.org/networking/http/http3.html
Apache License 2.0
1.83k stars 123 forks source link

build: Optimize dev dependencies #2097

Closed larseggert closed 3 weeks ago

larseggert commented 3 weeks ago

Noticed this in https://searchfox.org/mozilla-central/source/Cargo.toml

It speeds up my local build by ~20%:

Benchmark 1: cargo build
  Time (mean ± σ):     22.947 s ±  0.251 s    [User: 165.047 s, System: 9.151 s]
  Range (min … max):   22.350 s … 23.231 s    10 runs

Benchmark 1: cargo build
  Time (mean ± σ):     16.868 s ±  0.091 s    [User: 62.789 s, System: 7.239 s]
  Range (min … max):   16.721 s … 16.982 s    10 runs
github-actions[bot] commented 3 weeks ago

Firefox builds for this PR

The following builds are available for testing. Crossed-out builds did not succeed.

larseggert commented 3 weeks ago

Hm. This change is not why some builds are faster than others...

github-actions[bot] commented 3 weeks ago

Failed Interop Tests

QUIC Interop Runner, client vs. server

neqo-latest as client

Succeeded Interop Tests

QUIC Interop Runner, client vs. server

neqo-latest as client

codecov[bot] commented 3 weeks ago

Codecov Report

All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 95.33%. Comparing base (fa2b9d3) to head (49d9551). Report is 1 commits behind head on main.

Additional details and impacted files ```diff @@ Coverage Diff @@ ## main #2097 +/- ## ========================================== + Coverage 95.30% 95.33% +0.03% ========================================== Files 112 112 Lines 36300 36300 ========================================== + Hits 34594 34607 +13 + Misses 1706 1693 -13 ```

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

github-actions[bot] commented 3 weeks ago

Benchmark results

Performance differences relative to fa2b9d32b86bfd61d1674019b69bc4fa62a9b6da.

coalesce_acked_from_zero 1+1 entries: No change in performance detected.
       time:   [99.628 ns 99.966 ns 100.31 ns]
       change: [-0.6860% -0.3032% +0.0805%] (p = 0.11 > 0.05)

Found 11 outliers among 100 measurements (11.00%)
  9 (9.00%) high mild
  2 (2.00%) high severe
coalesce_acked_from_zero 3+1 entries: No change in performance detected.
       time:   [117.92 ns 118.24 ns 118.59 ns]
       change: [-0.6832% -0.0916% +0.4388%] (p = 0.76 > 0.05)

Found 19 outliers among 100 measurements (19.00%)
  3 (3.00%) low severe
  2 (2.00%) low mild
  2 (2.00%) high mild
  12 (12.00%) high severe
coalesce_acked_from_zero 10+1 entries: No change in performance detected.
       time:   [117.47 ns 117.80 ns 118.23 ns]
       change: [-0.7080% -0.1911% +0.2886%] (p = 0.48 > 0.05)

Found 15 outliers among 100 measurements (15.00%)
  5 (5.00%) low severe
  1 (1.00%) low mild
  5 (5.00%) high mild
  4 (4.00%) high severe
coalesce_acked_from_zero 1000+1 entries: No change in performance detected.
       time:   [98.908 ns 99.116 ns 99.374 ns]
       change: [-0.6007% +0.5227% +1.8912%] (p = 0.40 > 0.05)

Found 14 outliers among 100 measurements (14.00%)
  7 (7.00%) high mild
  7 (7.00%) high severe
RxStreamOrderer::inbound_frame(): Change within noise threshold.
       time:   [111.22 ms 111.36 ms 111.57 ms]
       change: [-1.1920% -0.9488% -0.7191%] (p = 0.00 < 0.05)

Found 13 outliers among 100 measurements (13.00%)
  6 (6.00%) low mild
  6 (6.00%) high mild
  1 (1.00%) high severe
transfer/pacing-false/varying-seeds: No change in performance detected.
       time:   [25.888 ms 26.925 ms 27.971 ms]
       change: [-9.2322% -3.9941% +1.3876%] (p = 0.15 > 0.05)
transfer/pacing-true/varying-seeds: :green_heart: Performance has improved.
       time:   [33.026 ms 34.556 ms 36.134 ms]
       change: [-14.818% -9.2012% -3.7284%] (p = 0.00 < 0.05)

Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) high mild
transfer/pacing-false/same-seed: No change in performance detected.
       time:   [31.496 ms 32.266 ms 33.003 ms]
       change: [-2.6820% +0.9465% +4.5358%] (p = 0.61 > 0.05)

Found 1 outliers among 100 measurements (1.00%)
  1 (1.00%) low mild
transfer/pacing-true/same-seed: No change in performance detected.
       time:   [41.201 ms 44.518 ms 47.868 ms]
       change: [-9.5398% -0.8862% +8.0681%] (p = 0.85 > 0.05)
1-conn/1-100mb-resp (aka. Download)/client: No change in performance detected.
       time:   [113.29 ms 113.70 ms 114.08 ms]
       thrpt:  [876.61 MiB/s 879.54 MiB/s 882.70 MiB/s]
change:
       time:   [-0.8879% -0.3042% +0.2405%] (p = 0.30 > 0.05)
       thrpt:  [-0.2399% +0.3052% +0.8958%]

Found 3 outliers among 100 measurements (3.00%)
  3 (3.00%) low mild
1-conn/10_000-parallel-1b-resp (aka. RPS)/client: No change in performance detected.
       time:   [313.99 ms 317.38 ms 320.74 ms]
       thrpt:  [31.178 Kelem/s 31.508 Kelem/s 31.848 Kelem/s]
change:
       time:   [-1.1922% +0.2758% +1.7511%] (p = 0.72 > 0.05)
       thrpt:  [-1.7210% -0.2750% +1.2066%]
1-conn/1-1b-resp (aka. HPS)/client: Change within noise threshold.
       time:   [32.360 ms 32.490 ms 32.634 ms]
       thrpt:  [30.643  elem/s 30.778  elem/s 30.902  elem/s]
change:
       time:   [-1.7500% -0.9471% -0.2035%] (p = 0.02 < 0.05)
       thrpt:  [+0.2039% +0.9562% +1.7812%]

Found 3 outliers among 100 measurements (3.00%)
  1 (1.00%) low mild
  1 (1.00%) high mild
  1 (1.00%) high severe

Client/server transfer results

Transfer of 33554432 bytes over loopback. Client Server CC Pacing Mean [ms] Min [ms] Max [ms] Relative
msquic msquic 152.6 ± 78.8 84.8 324.4 1.00
neqo msquic reno on 259.7 ± 61.9 216.5 398.2 1.00
neqo msquic reno 216.9 ± 11.0 206.9 239.6 1.00
neqo msquic cubic on 221.0 ± 16.4 203.9 247.4 1.00
neqo msquic cubic 282.9 ± 84.6 206.8 469.2 1.00
msquic neqo reno on 92.9 ± 21.7 75.0 147.6 1.00
msquic neqo reno 134.1 ± 117.5 74.7 596.7 1.00
msquic neqo cubic on 131.8 ± 74.2 75.1 330.7 1.00
msquic neqo cubic 120.8 ± 82.7 73.8 366.1 1.00
neqo neqo reno on 180.2 ± 81.0 124.6 397.8 1.00
neqo neqo reno 230.7 ± 133.9 131.3 651.4 1.00
neqo neqo cubic on 260.4 ± 167.4 124.4 711.9 1.00
neqo neqo cubic 161.2 ± 25.6 127.0 198.2 1.00

:arrow_down: Download logs