评审基线:StreamFrame 2.6.0,提交 `4b892d9eaa11cf003b5d10793e735b0604bc17ed`(2026-09-08 仓库评审)。 ## 评审发现 基准存在可核查的工作量差异,但本轮未重跑整套 BenchmarkDotNet,不能宣称现有测量数值本身全部无效。 - [bench/StreamFrame.Benchmarks/EndToEndBenchmarks.cs:40](https://github.com/CSJ608/StreamFrame/blob/4b892d9eaa11cf003b5d10793e735b0604bc17ed/bench/StreamFrame.Benchmarks/EndToEndBenchmarks.cs#L40) 中服务端计数后还 SendAsync 回显,客户端另有回显消费任务。 - [bench/StreamFrame.Benchmarks/RawTcpFloorBenchmarks.cs:65](https://github.com/CSJ608/StreamFrame/blob/4b892d9eaa11cf003b5d10793e735b0604bc17ed/bench/StreamFrame.Benchmarks/RawTcpFloorBenchmarks.cs#L65) 只读取字节并计数,无回显、无消息物化。 - 两者可用于各自场景的吞吐参考,但直接相减不能精确分离框架自身开销。README 中“快于裸 TCP”“大报文框架税”等结论需按口径解释。 - 大报文归因另有计数消费无回显的实现,应分别标明,不应把不同实验的结果交叉拼成一个成本结论。 ## 建议 建立明确分组: 1. 单向传输:两端都不回显,统一负载、发送批次、完成点和接收工作量。 2. 往返延迟:两边都做相同回显,统一每条消息的等待语义。 3. 框架与 Codec 成本:分别报告字节负载、字符串物化、XML 等场景,解释裸字节对照省略了哪些工作。 4. 记录 Socket 配置、机器、运行时、提交 SHA、迭代、分配统计口径及测量噪声。 保留现有环境与噪声披露的优点。“零拷贝”应明确指减少帧路径的一次整体拷贝,而非端到端没有任何拷贝/分配。 ## 验收 - [ ] 基准名称、实际执行工作与文档口径一致。 - [ ] 同口径基准可复现,原始 BenchmarkDotNet 结果可追溯。 - [ ] 至少覆盖 64B/1KB/64KB 与两种 Framer;将噪声与稳定差值分开说明。 - [ ] README/bench README 的百分比与结论仅对应支持它的实验。 - [ ] 顺手核对 bench README 指标开销的单位换算:2.6ns × 100000/s = 260µs/s,现有约 0.026µs/s 的说法不符。 - [ ] 文档中的筛选命令与拆分后的实际 benchmark 类名相匹配。 实施按 AGENTS.md:从最新 main 建分支、同步 CHANGELOG Unreleased、通过 Release build/test、走 PR;本 Issue 仅登记工作,不代表已实施修复。
Activity
CSJ608 commentedon Sep 8, 2026
#70 验收已由 PR #81 交付并 rebase 合并到 main
9111919。