Files
MoonBridge/testing/benchmarks/results/2026-10-06-session-split.md
T
layue13andClaude Opus 5.5 789648c82f refactor: 仓库根目录按用途分组
- proxy/:core、plugin-api、luckperms 及其上游子模块 vendor/luckperms
- messaging/、backend/ 保持在根目录(messaging 是代理与后端共用的 API)
- build-logic/(原 proxy-build-logic)
- testing/:smoke/ 与 benchmarks/,不进入发行物

Gradle 项目名不变(settings.gradle.kts 映射目录),任务路径与 Maven 坐标照旧。
脚本的仓库根定位、文档与记录中的链接同步更新。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 14:34:01 +08:00

1.9 KiB

Session / PluginHost split: relay throughput check (2026-10-06)

Question: does splitting Session and friends into collaborating classes (PR "Split Session, PluginHost ...", merged as 0ad66b6) change proxy throughput?

Decision rule, set before running: the branch is acceptable if its median proxy roundtrips/s and per-frame proxy CPU are within 3% of the pre-split commit 1efbbaf and the ranges overlap.

Method: ProxySessionBenchmark, --connections 4 --messages 6000 --warmup 1000 --repeats 3 --window 4 --burst 8 --transport auto (kqueue on this host), leak detection disabled as in the distribution. One JVM per run, variant order alternated (base/branch, branch/base, ...). 6 JVM runs x 3 repeats = 18 samples per variant and mode, modes initial and post-transfer. A later 4 JVM run, 12 sample recheck was taken on the final merged code.

mode variant samples roundtrips/s median range proxy CPU ns/frame median
initial base 18 26475 26066-27145 8554
initial branch 18 26680 25912-27084 8574
post-transfer base 18 26306 25491-27540 8834
post-transfer branch 18 26431 25641-26953 8790
initial (final code) base 12 26391 25434-27268 8693
initial (final code) branch 12 26197 25274-27179 8663

Result: differences are +0.8%, +0.5% and -0.7%, all inside the run-to-run range; no errors in any sample. The rule is met.

Raw output: 2026-10-06-session-split-base-raw.txt, 2026-10-06-session-split-branch-raw.txt (the first 36 samples per variant; the recheck is summarised above only).

Not covered: a single macOS host over loopback with a synthetic backend, no Forge, no real client, no capacity claim; the login path, plugin command dispatch and the backend control channel were not benchmarked (they are off the PLAY relay path and were only exercised by the test suite).