Skip to content

perf: 大报文优化与归因——自适应发送缓冲 + 三 codec 归因基准 + 大报文指南 - #51

Merged
CSJ608 merged 2 commits into
mainfrom
perf-large-message
Aug 29, 2026
Merged

CSJ608 merged 2 commits into
mainfrom
perf-large-message

Conversation

@CSJ608

@CSJ608 CSJ608 commented Aug 29, 2026

Copy link
Copy Markdown
Owner

按确认的三阶段方案执行完毕。

归因结果(核心产出)

64KB 每消息(计数消费、两轮区间):

变体 耗时 分配 归因
byte[] + 透传 codec 59–73 µs 64 KB 框架纯成本:距裸 TCP 地板(45–50µs)仅 ≈20–45%,框架自身零分配(64KB 是解码侧 ToArray,codec 固有)
string + span 直写 70–104 µs 129 KB +64 KB = 消息类型固有税(UTF-16 物化)
string + 分配式 GetBytes(旧写法) 73–92 µs 193 KB 再 +64 KB = codec 写法税(中间数组,span 重载消除)

昨天记录的"64KB 框架税 3–4×"经归因后重新定性:大头是 codec 写法与消息类型成本;发布口径的回显式基准行(134–188µs)已在 bench/README 加注说明其 codec 构成。

框架改动

发送编码缓冲自适应初始尺寸:按连接记忆上一帧高水位(封顶 1MB,发送 worker 单线程无锁)——稳态尺寸相近的协议(设备周期上报)不再从 1KB 起爬几何增长梯子。诚实披露:对稳态大报文的影响在噪声内(收益在暖机期与尺寸混布场景)。

文档

  • README 双语新增**"大报文指南"**:span 直写重载的代码示例(推荐/不推荐对照)、byte[]/ReadOnlyMemory 消息类型建议、流式编码与自适应缓冲说明;
  • bench/README:归因表 + 端到端表第三数据点 + 框架税 64KB 行的归因注脚;
  • CHANGELOG Unreleased 记录。

测试

84×3 = 252 全绿(含发送路径全量回归——自适应缓冲改变了起租尺寸,现有发送/会话/混沌测试均覆盖)。

Marci added 2 commits August 29, 2026 11:38
- 框架:发送编码缓冲自适应初始尺寸(按连接记忆上一帧高水位,封顶 1MB;
  发送 worker 单线程访问无需同步)——稳态尺寸相近的协议不再从 1KB 起
  爬几何增长梯子(稳态收益在噪声内,主要消除暖机期的跨桶租借)
- 归因基准(64KB,计数消费):byte[] 透传 59–73µs/64KB 分配(框架纯成本
  距裸 TCP ≈20–45%,分配仅为解码侧 ToArray);string+span 70–104µs/129KB
  (+64KB = UTF-16 物化固有税);string+分配式 73–92µs/193KB(再 +64KB =
  GetBytes 中间数组,span 重载可消除)
- 文档:README 双语新增"大报文指南"(span 重载示例/byte[] 消息类型/
  流式编码与自适应缓冲);bench/README 增归因表、端到端表补第三数据点、
  框架税 64KB 行加注 codec 主导的归因说明
@CSJ608
CSJ608 merged commit 36f8f73 into main Aug 29, 2026
4 checks passed
@CSJ608
CSJ608 deleted the perf-large-message branch August 29, 2026 03:47
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.

1 participant