Skip to content

feat: add recovery:loss_timer_updated qlog events#3437

Merged
larseggert merged 2 commits into
mozilla:mainfrom
larseggert:feat-qlog-loss_timer_updated
Mar 13, 2026
Merged

feat: add recovery:loss_timer_updated qlog events#3437
larseggert merged 2 commits into
mozilla:mainfrom
larseggert:feat-qlog-loss_timer_updated

Conversation

@larseggert
Copy link
Copy Markdown
Collaborator

No description provided.

Copilot AI review requested due to automatic review settings March 11, 2026 09:04
@larseggert larseggert force-pushed the feat-qlog-loss_timer_updated branch from bb93845 to 3c91bbb Compare March 11, 2026 09:05
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds richer qlog instrumentation around loss-recovery timers (PTO/loss detection), alongside some supporting qlog plumbing and congestion-control pacing metrics, to improve observability during recovery behavior.

Changes:

  • Emit qlog loss_timer_updated events on PTO set/expiry/cancel points in loss recovery, with new unit tests validating the presence of these events.
  • Extend qlog metric emission to include a pacing rate metric, including a new Pacer::rate() helper and CC integration.
  • Adjust qlog streamer importance threshold handling (and error handling) to support emitting these new events.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
test-fixture/src/lib.rs Updates the test qlog streamer importance threshold used by fixtures.
neqo-transport/src/recovery/mod.rs Adds qlog loss-timer set/expired/cancelled events and accompanying tests.
neqo-transport/src/qlog.rs Implements helpers/types to emit loss_timer_updated events and adds a pacing rate metric.
neqo-transport/src/pace.rs Refactors pacing math, adds reusable byte-rate helpers, and introduces unit tests for rate calculation.
neqo-transport/src/cc/classic_cc.rs Emits pacing-rate metrics via qlog and tracks last RTT to include pacing rate in more CC state transitions.
neqo-common/src/qlog.rs Adjusts qlog streamer importance threshold and treats qlog::Error::Done as non-fatal.

Comment thread neqo-transport/src/recovery/mod.rs
Comment thread neqo-common/src/qlog.rs
Comment thread test-fixture/src/lib.rs
@codecov
Copy link
Copy Markdown

codecov Bot commented Mar 11, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 94.18%. Comparing base (70a0ba6) to head (0bf9164).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #3437      +/-   ##
==========================================
+ Coverage   94.12%   94.18%   +0.06%     
==========================================
  Files         125      129       +4     
  Lines       38339    38766     +427     
  Branches    38339    38766     +427     
==========================================
+ Hits        36086    36512     +426     
+ Misses       1412     1404       -8     
- Partials      841      850       +9     
Flag Coverage Δ
freebsd 93.23% <100.00%> (+0.08%) ⬆️
linux 94.29% <100.00%> (+0.18%) ⬆️
macos 94.17% <100.00%> (+0.16%) ⬆️
windows 94.28% <100.00%> (+0.18%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Components Coverage Δ
neqo-common 98.49% <100.00%> (-0.05%) ⬇️
neqo-crypto 86.90% <ø> (ø)
neqo-http3 93.91% <ø> (ø)
neqo-qpack 94.81% <ø> (+0.46%) ⬆️
neqo-transport 95.23% <100.00%> (+0.26%) ⬆️
neqo-udp 82.97% <ø> (ø)
mtu 86.61% <ø> (ø)

@larseggert larseggert changed the title Feat qlog loss timer updated feat: add recovery:loss_timer_updated qlog events Mar 11, 2026
@larseggert larseggert force-pushed the feat-qlog-loss_timer_updated branch from 3c91bbb to e703109 Compare March 11, 2026 09:19
@codspeed-hq
Copy link
Copy Markdown

codspeed-hq Bot commented Mar 11, 2026

Merging this PR will degrade performance by 49.28%

⚡ 4 improved benchmarks
❌ 7 regressed benchmarks
✅ 40 untouched benchmarks

⚠️ Please fix the performance issues or acknowledge them on CodSpeed.

Performance Changes

Mode Benchmark BASE HEAD Efficiency
WallTime neqo-google 1.6 s 1.7 s -3.48%
WallTime neqo-s2n 510.5 ms 604.2 ms -15.52%
WallTime s2n-s2n 648 ms 622.5 ms +4.09%
WallTime s2n-neqo 483 ms 468.3 ms +3.15%
WallTime msquic-neqo 393.4 ms 416 ms -5.44%
WallTime msquic-msquic 482.2 ms 467.8 ms +3.08%
WallTime neqo-neqo-newreno 298.5 ms 285.3 ms +4.62%
WallTime walltime/pacing-false/same-seed 54.8 ms 106.6 ms -48.6%
WallTime walltime/pacing-true/same-seed 54.7 ms 107.5 ms -49.1%
WallTime walltime/pacing-true/varying-seeds 54.8 ms 107.8 ms -49.19%
WallTime walltime/pacing-false/varying-seeds 54.7 ms 107.9 ms -49.28%

Comparing larseggert:feat-qlog-loss_timer_updated (0bf9164) with main (70a0ba6)

Open in CodSpeed

@larseggert larseggert force-pushed the feat-qlog-loss_timer_updated branch from e703109 to 027232e Compare March 11, 2026 09:59
Copy link
Copy Markdown
Member

@mxinden mxinden left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Other than the seemingly unrelated change, this looks good to me.

Comment thread neqo-common/src/qlog.rs
@larseggert
Copy link
Copy Markdown
Collaborator Author

Other than the seemingly unrelated change, this looks good to me.

Sorry, which change is this?

@larseggert larseggert force-pushed the feat-qlog-loss_timer_updated branch from 027232e to d9ff209 Compare March 12, 2026 16:31
Also fix `Qlog::add_event_with_stream` incorrectly treating
`qlog::Error::Done` (event filtered by importance level) as fatal, and
switch the default qlog importance from `Base` to `Extra` — no other
`Extra`-importance events are implemented so this adds no overhead.
@larseggert larseggert force-pushed the feat-qlog-loss_timer_updated branch from d9ff209 to d6a5f0c Compare March 12, 2026 16:32
Comment thread neqo-common/src/qlog.rs
@mxinden
Copy link
Copy Markdown
Member

mxinden commented Mar 12, 2026

Other than the seemingly unrelated change, this looks good to me.

Sorry, which change is this?

Was referring to the qlog::Error::Done case. Fine to merge with a comment explaining Error::Done.

@larseggert larseggert enabled auto-merge March 13, 2026 06:06
@larseggert larseggert added this pull request to the merge queue Mar 13, 2026
@github-actions
Copy link
Copy Markdown
Contributor

Failed Interop Tests

QUIC Interop Runner, client vs. server, differences relative to main at 70a0ba6.

neqo-pr as clientneqo-pr as server
neqo-pr vs. go-x-net: BP BA
neqo-pr vs. haproxy: 🚀M BP BA
neqo-pr vs. kwik: BP BA
neqo-pr vs. linuxquic: ⚠️C1
neqo-pr vs. lsquic: L1 C1
neqo-pr vs. msquic: A L1 C1
neqo-pr vs. mvfst: A ⚠️L1 C1 ⚠️BA
neqo-pr vs. neqo: Z A
neqo-pr vs. nginx: BP BA
neqo-pr vs. ngtcp2: CM
neqo-pr vs. picoquic: A
neqo-pr vs. quic-go: A
neqo-pr vs. quiche: ⚠️L1 BP BA
neqo-pr vs. s2n-quic: ⚠️BP BA CM
neqo-pr vs. tquic: S BP BA
neqo-pr vs. xquic: A 🚀L1 C1
aioquic vs. neqo-pr: Z ⚠️C1 CM
go-x-net vs. neqo-pr: CM
kwik vs. neqo-pr: Z BP BA CM
linuxquic vs. neqo-pr: ⚠️BP
lsquic vs. neqo-pr: Z
msquic vs. neqo-pr: Z CM
mvfst vs. neqo-pr: Z A L1 C1 CM
neqo vs. neqo-pr: Z A
openssl vs. neqo-pr: LR M A CM
picoquic vs. neqo-pr: Z CM
quic-go vs. neqo-pr: ⚠️Z CM
quiche vs. neqo-pr: Z ⚠️C1 CM
quinn vs. neqo-pr: Z V2 CM
s2n-quic vs. neqo-pr: CM
tquic vs. neqo-pr: Z CM
xquic vs. neqo-pr: M CM
All results

Succeeded Interop Tests

QUIC Interop Runner, client vs. server

neqo-pr as client

neqo-pr as server

Unsupported Interop Tests

QUIC Interop Runner, client vs. server

neqo-pr as client

neqo-pr as server

Merged via the queue into mozilla:main with commit 46de5bb Mar 13, 2026
195 checks passed
@larseggert larseggert deleted the feat-qlog-loss_timer_updated branch March 13, 2026 06:32
@github-actions
Copy link
Copy Markdown
Contributor

Client/server transfer results

Performance differences relative to 46de5bb.

Transfer of 33554432 bytes over loopback, min. 100 runs. All unit-less numbers are in milliseconds.

Client vs. server (params) Mean ± σ Min Max MiB/s ± σ Δ main Δ main
neqo-google-cubic 756.1 ± 5.0 747.6 768.0 42.3 ± 6.4 💔 1.9 0.3%
neqo-neqo-newreno-nopacing 96.8 ± 4.2 88.4 104.0 330.4 ± 7.6 💔 2.6 2.7%
neqo-quiche-cubic 191.6 ± 3.9 184.7 202.2 167.0 ± 8.2 💔 1.0 0.6%
s2n-neqo-cubic 174.9 ± 5.3 160.8 190.1 183.0 ± 6.0 💔 1.6 0.9%

Table above only shows statistically significant changes. See all results below.

All results

Transfer of 33554432 bytes over loopback, min. 100 runs. All unit-less numbers are in milliseconds.

Client vs. server (params) Mean ± σ Min Max MiB/s ± σ Δ main Δ main
google-google-nopacing 456.4 ± 4.2 448.9 467.1 70.1 ± 7.6
google-neqo-cubic 274.2 ± 4.7 266.1 291.2 116.7 ± 6.8 -0.3 -0.1%
msquic-msquic-nopacing 227.3 ± 87.4 140.1 580.5 140.8 ± 0.4
msquic-neqo-cubic 241.9 ± 101.0 152.2 660.5 132.3 ± 0.3 -8.3 -3.3%
neqo-google-cubic 756.1 ± 5.0 747.6 768.0 42.3 ± 6.4 💔 1.9 0.3%
neqo-msquic-cubic 159.2 ± 4.5 151.8 167.6 201.0 ± 7.1 -0.2 -0.1%
neqo-neqo-cubic 96.5 ± 4.3 87.6 105.5 331.7 ± 7.4 0.7 0.7%
neqo-neqo-cubic-nopacing 94.9 ± 4.0 88.1 104.1 337.3 ± 8.0 -0.1 -0.1%
neqo-neqo-newreno 95.1 ± 3.8 86.7 106.5 336.3 ± 8.4 -0.5 -0.5%
neqo-neqo-newreno-nopacing 96.8 ± 4.2 88.4 104.0 330.4 ± 7.6 💔 2.6 2.7%
neqo-quiche-cubic 191.6 ± 3.9 184.7 202.2 167.0 ± 8.2 💔 1.0 0.6%
neqo-s2n-cubic 220.6 ± 4.2 210.6 228.8 145.1 ± 7.6 0.2 0.1%
quiche-neqo-cubic 179.5 ± 4.7 169.7 192.6 178.3 ± 6.8 -0.8 -0.4%
quiche-quiche-nopacing 142.4 ± 5.6 135.6 168.5 224.8 ± 5.7
s2n-neqo-cubic 174.9 ± 5.3 160.8 190.1 183.0 ± 6.0 💔 1.6 0.9%
s2n-s2n-nopacing 249.6 ± 29.4 230.8 346.4 128.2 ± 1.1

Download data for profiler.firefox.com or download performance comparison data.

@github-actions
Copy link
Copy Markdown
Contributor

Benchmark results

Significant performance differences relative to 46de5bb.

transfer/1-conn/1-100mb-req (aka. Upload)/mtu-1504: 💚 Performance has improved by -1.5680%.
       time:   [204.76 ms 205.10 ms 205.49 ms]
       thrpt:  [486.64 MiB/s 487.56 MiB/s 488.38 MiB/s]
change:
       time:   [-1.8861% -1.5680% -1.2751] (p = 0.00 < 0.05)
       thrpt:  [+1.2916% +1.5930% +1.9224]
       Performance has improved.
Found 3 outliers among 100 measurements (3.00%)
2 (2.00%) high mild
1 (1.00%) high severe
All results
transfer/1-conn/1-100mb-resp (aka. Download)/mtu-1504: Change within noise threshold.
       time:   [202.77 ms 203.14 ms 203.50 ms]
       thrpt:  [491.41 MiB/s 492.28 MiB/s 493.16 MiB/s]
change:
       time:   [-0.6200% -0.3640% -0.1266] (p = 0.00 < 0.05)
       thrpt:  [+0.1268% +0.3653% +0.6238]
       Change within noise threshold.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mild
transfer/1-conn/10_000-parallel-1b-resp (aka. RPS)/mtu-1504: Change within noise threshold.
       time:   [285.48 ms 287.38 ms 289.28 ms]
       thrpt:  [34.569 Kelem/s 34.798 Kelem/s 35.029 Kelem/s]
change:
       time:   [-1.9475% -1.1080% -0.2084] (p = 0.01 < 0.05)
       thrpt:  [+0.2089% +1.1204% +1.9862]
       Change within noise threshold.
transfer/1-conn/1-1b-resp (aka. HPS)/mtu-1504: No change in performance detected.
       time:   [38.537 ms 38.691 ms 38.866 ms]
       thrpt:  [25.729   B/s 25.846   B/s 25.949   B/s]
change:
       time:   [-0.7561% -0.1164% +0.4916] (p = 0.72 > 0.05)
       thrpt:  [-0.4892% +0.1166% +0.7618]
       No change in performance detected.
Found 9 outliers among 100 measurements (9.00%)
3 (3.00%) high mild
6 (6.00%) high severe
transfer/1-conn/1-100mb-req (aka. Upload)/mtu-1504: 💚 Performance has improved by -1.5680%.
       time:   [204.76 ms 205.10 ms 205.49 ms]
       thrpt:  [486.64 MiB/s 487.56 MiB/s 488.38 MiB/s]
change:
       time:   [-1.8861% -1.5680% -1.2751] (p = 0.00 < 0.05)
       thrpt:  [+1.2916% +1.5930% +1.9224]
       Performance has improved.
Found 3 outliers among 100 measurements (3.00%)
2 (2.00%) high mild
1 (1.00%) high severe
decode 4096 bytes, mask ff: No change in performance detected.
       time:   [5.5779 µs 5.5866 µs 5.5954 µs]
       change: [-0.1442% +0.1149% +0.3685] (p = 0.40 > 0.05)
       No change in performance detected.
Found 6 outliers among 100 measurements (6.00%)
4 (4.00%) high mild
2 (2.00%) high severe
decode 1048576 bytes, mask ff: No change in performance detected.
       time:   [1.4285 ms 1.4306 ms 1.4328 ms]
       change: [-0.0405% +0.2243% +0.4736] (p = 0.08 > 0.05)
       No change in performance detected.
decode 4096 bytes, mask 7f: No change in performance detected.
       time:   [8.4534 µs 8.4652 µs 8.4776 µs]
       change: [-0.1941% +0.0390% +0.2808] (p = 0.75 > 0.05)
       No change in performance detected.
Found 5 outliers among 100 measurements (5.00%)
3 (3.00%) high mild
2 (2.00%) high severe
decode 1048576 bytes, mask 7f: No change in performance detected.
       time:   [2.1761 ms 2.1797 ms 2.1837 ms]
       change: [-0.3340% -0.0862% +0.1516] (p = 0.50 > 0.05)
       No change in performance detected.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mild
decode 4096 bytes, mask 3f: No change in performance detected.
       time:   [6.9118 µs 6.9233 µs 6.9357 µs]
       change: [-0.1343% +0.1272% +0.3968] (p = 0.35 > 0.05)
       No change in performance detected.
Found 4 outliers among 100 measurements (4.00%)
3 (3.00%) high mild
1 (1.00%) high severe
decode 1048576 bytes, mask 3f: No change in performance detected.
       time:   [1.7658 ms 1.7690 ms 1.7725 ms]
       change: [-0.1909% +0.0393% +0.2586] (p = 0.75 > 0.05)
       No change in performance detected.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mild
streams/simulated/1-streams/each-1000-bytes: No change in performance detected.
       time:   [129.68 ms 129.68 ms 129.69 ms]
       thrpt:  [7.5302 KiB/s 7.5304 KiB/s 7.5306 KiB/s]
change:
       time:   [+0.0000% +0.0037% +0.0076] (p = 0.05 > 0.05)
       thrpt:  [-0.0076% -0.0037% -0.0000]
       No change in performance detected.
streams/simulated/1000-streams/each-1-bytes: No change in performance detected.
       time:   [2.5361 s 2.5364 s 2.5367 s]
       thrpt:  [394.22   B/s 394.27   B/s 394.31   B/s]
change:
       time:   [-0.0126% +0.0038% +0.0207] (p = 0.65 > 0.05)
       thrpt:  [-0.0207% -0.0038% +0.0126]
       No change in performance detected.
Found 3 outliers among 100 measurements (3.00%)
3 (3.00%) high mild
streams/simulated/1000-streams/each-1000-bytes: Change within noise threshold.
       time:   [6.5841 s 6.5923 s 6.6017 s]
       thrpt:  [147.93 KiB/s 148.14 KiB/s 148.32 KiB/s]
change:
       time:   [-0.4942% -0.2640% -0.0309] (p = 0.03 < 0.05)
       thrpt:  [+0.0309% +0.2647% +0.4966]
       Change within noise threshold.
Found 5 outliers among 100 measurements (5.00%)
1 (1.00%) high mild
4 (4.00%) high severe
streams/walltime/1-streams/each-1000-bytes: Change within noise threshold.
       time:   [581.47 µs 583.09 µs 585.08 µs]
       change: [-1.3995% -0.9221% -0.4317] (p = 0.00 < 0.05)
       Change within noise threshold.
Found 6 outliers among 100 measurements (6.00%)
1 (1.00%) high mild
5 (5.00%) high severe
streams/walltime/1000-streams/each-1-bytes: Change within noise threshold.
       time:   [12.355 ms 12.373 ms 12.391 ms]
       change: [-0.5184% -0.2983% -0.0853] (p = 0.01 < 0.05)
       Change within noise threshold.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mild
streams/walltime/1000-streams/each-1000-bytes: Change within noise threshold.
       time:   [44.812 ms 44.851 ms 44.889 ms]
       change: [-1.0819% -0.7488% -0.5146] (p = 0.00 < 0.05)
       Change within noise threshold.
Found 2 outliers among 100 measurements (2.00%)
2 (2.00%) low mild
coalesce_acked_from_zero 1+1 entries: No change in performance detected.
       time:   [92.579 ns 92.907 ns 93.236 ns]
       change: [-0.2692% +0.2047% +0.6684] (p = 0.40 > 0.05)
       No change in performance detected.
Found 14 outliers among 100 measurements (14.00%)
11 (11.00%) high mild
3 (3.00%) high severe
coalesce_acked_from_zero 3+1 entries: No change in performance detected.
       time:   [110.24 ns 110.91 ns 112.06 ns]
       change: [-0.6423% -0.1094% +0.5080] (p = 0.73 > 0.05)
       No change in performance detected.
Found 15 outliers among 100 measurements (15.00%)
1 (1.00%) low severe
1 (1.00%) low mild
5 (5.00%) high mild
8 (8.00%) high severe
coalesce_acked_from_zero 10+1 entries: No change in performance detected.
       time:   [109.72 ns 109.93 ns 110.21 ns]
       change: [-0.7275% -0.2404% +0.3161] (p = 0.39 > 0.05)
       No change in performance detected.
Found 14 outliers among 100 measurements (14.00%)
2 (2.00%) low severe
2 (2.00%) low mild
2 (2.00%) high mild
8 (8.00%) high severe
coalesce_acked_from_zero 1000+1 entries: No change in performance detected.
       time:   [94.037 ns 94.150 ns 94.289 ns]
       change: [-1.0308% -0.4869% +0.1519] (p = 0.12 > 0.05)
       No change in performance detected.
Found 17 outliers among 100 measurements (17.00%)
8 (8.00%) high mild
9 (9.00%) high severe
RxStreamOrderer::inbound_frame(): Change within noise threshold.
       time:   [109.45 ms 109.56 ms 109.66 ms]
       change: [-0.2888% -0.1531% -0.0209] (p = 0.02 < 0.05)
       Change within noise threshold.
sent::Packets::take_ranges: No change in performance detected.
       time:   [4.4826 µs 4.5951 µs 4.7074 µs]
       change: [-9.7681% -3.0740% +2.4145] (p = 0.39 > 0.05)
       No change in performance detected.
Found 3 outliers among 100 measurements (3.00%)
3 (3.00%) high mild
transfer/simulated/pacing-false/varying-seeds: No change in performance detected.
       time:   [23.941 s 23.941 s 23.941 s]
       thrpt:  [171.09 KiB/s 171.09 KiB/s 171.09 KiB/s]
change:
       time:   [+0.0000% +0.0000% +0.0000] (p = NaN > 0.05)
       thrpt:  [+0.0000% +0.0000% +0.0000]
       No change in performance detected.
transfer/simulated/pacing-true/varying-seeds: No change in performance detected.
       time:   [23.676 s 23.676 s 23.676 s]
       thrpt:  [173.01 KiB/s 173.01 KiB/s 173.01 KiB/s]
change:
       time:   [+0.0000% +0.0000% +0.0000] (p = NaN > 0.05)
       thrpt:  [+0.0000% +0.0000% +0.0000]
       No change in performance detected.
transfer/simulated/pacing-false/same-seed: No change in performance detected.
       time:   [23.941 s 23.941 s 23.941 s]
       thrpt:  [171.09 KiB/s 171.09 KiB/s 171.09 KiB/s]
change:
       time:   [+0.0000% +0.0000% +0.0000] (p = NaN > 0.05)
       thrpt:  [+0.0000% +0.0000% +0.0000]
       No change in performance detected.
transfer/simulated/pacing-true/same-seed: No change in performance detected.
       time:   [23.676 s 23.676 s 23.676 s]
       thrpt:  [173.01 KiB/s 173.01 KiB/s 173.01 KiB/s]
change:
       time:   [+0.0000% +0.0000% +0.0000] (p = NaN > 0.05)
       thrpt:  [+0.0000% +0.0000% +0.0000]
       No change in performance detected.
transfer/walltime/pacing-false/varying-seeds: Change within noise threshold.
       time:   [23.391 ms 23.419 ms 23.454 ms]
       change: [+0.7595% +0.9084% +1.0730] (p = 0.00 < 0.05)
       Change within noise threshold.
Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) high mild
1 (1.00%) high severe
transfer/walltime/pacing-true/varying-seeds: Change within noise threshold.
       time:   [23.394 ms 23.419 ms 23.449 ms]
       change: [-0.3961% -0.2672% -0.1231] (p = 0.00 < 0.05)
       Change within noise threshold.
Found 4 outliers among 100 measurements (4.00%)
3 (3.00%) low mild
1 (1.00%) high severe
transfer/walltime/pacing-false/same-seed: Change within noise threshold.
       time:   [23.010 ms 23.041 ms 23.085 ms]
       change: [-1.9257% -1.7649% -1.5540] (p = 0.00 < 0.05)
       Change within noise threshold.
Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) high mild
1 (1.00%) high severe
transfer/walltime/pacing-true/same-seed: Change within noise threshold.
       time:   [23.391 ms 23.408 ms 23.425 ms]
       change: [-0.9866% -0.8726% -0.7689] (p = 0.00 < 0.05)
       Change within noise threshold.
Found 3 outliers among 100 measurements (3.00%)
2 (2.00%) low mild
1 (1.00%) high mild

Download data for profiler.firefox.com or download performance comparison data.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants