Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: deduplicate events #1818

Closed
wants to merge 2 commits into from
Closed

Conversation

mxinden
Copy link
Collaborator

@mxinden mxinden commented Apr 11, 2024

See whether #921 has any performance impact.

Though arguably, given that it origins from a HashSet and given the contains call, there is no duplication.

(Calling dedup on an unsorted Vec is not complete.)

See whether mozilla#921 has any performance impact.
Copy link

github-actions bot commented Apr 11, 2024

Benchmark results

Performance differences relative to c004359.

  • drain a timer quickly time: [427.93 ns 434.01 ns 439.66 ns]
    change: [+0.4072% +1.7394% +3.0491%] (p = 0.01 < 0.05)
    Change within noise threshold.

  • coalesce_acked_from_zero 1+1 entries
    time: [194.96 ns 195.44 ns 195.95 ns]
    change: [-3.1728% -2.6994% -2.2390%] (p = 0.00 < 0.05)
    💚 Performance has improved.

  • coalesce_acked_from_zero 3+1 entries
    time: [238.65 ns 239.37 ns 240.11 ns]
    change: [-1.3500% -1.0333% -0.6958%] (p = 0.00 < 0.05)
    Change within noise threshold.

  • coalesce_acked_from_zero 10+1 entries
    time: [237.78 ns 238.65 ns 239.65 ns]
    change: [-1.7171% -1.2732% -0.8265%] (p = 0.00 < 0.05)
    Change within noise threshold.

  • coalesce_acked_from_zero 1000+1 entries
    time: [217.64 ns 217.80 ns 217.98 ns]
    change: [-14.769% -6.0067% -0.6237%] (p = 0.20 > 0.05)
    No change in performance detected.

  • RxStreamOrderer::inbound_frame()
    time: [119.12 ms 119.19 ms 119.27 ms]
    change: [+0.2873% +0.4094% +0.5290%] (p = 0.00 < 0.05)
    Change within noise threshold.

  • transfer/Run multiple transfers with varying seeds
    time: [119.32 ms 119.61 ms 119.91 ms]
    thrpt: [33.358 MiB/s 33.441 MiB/s 33.524 MiB/s]
    change:
    time: [-0.6819% -0.2981% +0.0568%] (p = 0.10 > 0.05)
    thrpt: [-0.0568% +0.2989% +0.6866%]
    No change in performance detected.

  • transfer/Run multiple transfers with the same seed
    time: [119.64 ms 119.81 ms 119.98 ms]
    thrpt: [33.339 MiB/s 33.386 MiB/s 33.433 MiB/s]
    change:
    time: [-1.0069% -0.7936% -0.5808%] (p = 0.00 < 0.05)
    thrpt: [+0.5842% +0.8000% +1.0172%]
    Change within noise threshold.

  • 1-conn/1-100mb-resp (aka. Download)/client
    time: [1.1161 s 1.1416 s 1.1682 s]
    thrpt: [85.600 MiB/s 87.593 MiB/s 89.597 MiB/s]
    change:
    time: [+3.1913% +5.5493% +8.0995%] (p = 0.00 < 0.05)
    thrpt: [-7.4926% -5.2575% -3.0926%]
    💔 Performance has regressed.

  • 1-conn/10_000-parallel-1b-resp (aka. RPS)/client
    time: [424.94 ms 427.13 ms 429.36 ms]
    thrpt: [23.291 Kelem/s 23.412 Kelem/s 23.533 Kelem/s]
    change:
    time: [-0.9157% -0.2421% +0.4896%] (p = 0.50 > 0.05)
    thrpt: [-0.4872% +0.2426% +0.9242%]
    No change in performance detected.

  • 1-conn/1-1b-resp (aka. HPS)/client
    time: [51.458 ms 51.746 ms 52.040 ms]
    thrpt: [19.216 elem/s 19.325 elem/s 19.433 elem/s]
    change:
    time: [-2.1023% -1.1633% -0.2083%] (p = 0.01 < 0.05)
    thrpt: [+0.2088% +1.1770% +2.1475%]
    Change within noise threshold.

Client/server transfer results

Transfer of 134217728 bytes over loopback.

Client Server CC Pacing Mean [ms] Min [ms] Max [ms] Relative
msquic msquic 856.2 ± 380.4 444.8 1422.5 1.00
neqo msquic reno on 1047.5 ± 250.7 822.5 1546.9 1.00
neqo msquic reno 1166.9 ± 309.2 795.5 1602.7 1.00
neqo msquic cubic on 1045.2 ± 137.4 830.6 1310.3 1.00
neqo msquic cubic 982.4 ± 308.0 733.6 1608.2 1.00
msquic neqo reno on 4561.4 ± 371.2 4124.1 5337.3 1.00
msquic neqo reno 4407.4 ± 224.0 4109.1 4862.0 1.00
msquic neqo cubic on 4504.6 ± 342.3 4128.4 5036.1 1.00
msquic neqo cubic 4429.9 ± 226.3 4168.5 4859.5 1.00
neqo neqo reno on 3702.7 ± 389.5 3253.5 4319.6 1.00
neqo neqo reno 3767.2 ± 246.5 3457.0 4216.7 1.00
neqo neqo cubic on 4376.9 ± 396.1 3499.8 5056.5 1.00
neqo neqo cubic 4153.8 ± 509.7 2767.3 4591.8 1.00

⬇️ Download logs

Copy link

codecov bot commented Apr 12, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 93.13%. Comparing base (c004359) to head (2bdfa27).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1818      +/-   ##
==========================================
- Coverage   93.13%   93.13%   -0.01%     
==========================================
  Files         117      117              
  Lines       36353    36346       -7     
==========================================
- Hits        33857    33850       -7     
  Misses       2496     2496              

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link
Member

@martinthomson martinthomson left a comment

Choose a reason for hiding this comment

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

I'm not seeing any impact. But this seems like a decent change.

@mxinden
Copy link
Collaborator Author

mxinden commented Apr 24, 2024

Under the assumption that neqo's server logic is for testing purposes only, I believe one can greatly simplify the server related logic in neqo-transport and neqo-http3 instead of optimizing it (this pull request). Closing here in favor of a simpler approach. More to come.

@mxinden mxinden closed this Apr 24, 2024
@mxinden
Copy link
Collaborator Author

mxinden commented Jul 4, 2024

Closing here in favor of a simpler approach. More to come.

For the record, this has been done in #1929.

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.

None yet

2 participants