性能测试工具bench

This commit is contained in:
2026-03-05 08:45:23 +00:00
parent a190bdeea5
commit c4e9bedd0a
19 changed files with 2108 additions and 1984 deletions

50
doc/conclusion.md Normal file
View File

@@ -0,0 +1,50 @@
# 性能定位结论(主线程)
## 1) 主要瓶颈结论
基于当前主线程采样统计,结论是:
- **主线程最大开销确实是内存申请/管理相关开销**(而不是纯 memcpy
- 开销占比大致为:
- `submit_write` 打包阶段:约 **61.3%**
- 其中 alloc 约 **66.5% of pack**(折算到主线程总开销约 **40.8%**
- copy 约 **14.2% of pack**(折算到主线程总开销约 **8.7%**
- 入队/通知SPSC push + notify**29.2%**
- 回收释放:约 **9.5%**
- backpressure 影响很小loops≈0
所以“减少申请内存次数”这个判断是对的,而且是当前最有价值的优化方向。
---
## 2) 对方案 2 / 3 的评价(结合本系统)
### 方案 2A/B 双 flag 缓冲覆写保护
- **优点**:实现直观,容易快速落地验证正确性。
- **缺点**
- 本质仍是“执行路径与拷贝路径耦合”,请求推进会受慢侧牵制;
- 不能从根本上消除 alloc 热点,只是控制覆写时序;
- 在高并发下调试成本会上升(状态机与边界条件多)。
- **结论**:适合快速试验,不是长期高性能形态。
### 方案 3ChainBuffer 所有权移交(摘链/归还)
- **优点**
- 以“指针/节点移动”替代大量 alloc+copy方向与当前瓶颈完全一致
- 对大 value、高吞吐场景收益潜力更大。
- **缺点**
- 生命周期、并发归还、异常回收都要设计清楚;
- 实现复杂度明显高于方案 2。
- **结论**:更符合长期性能目标,但需要更严格的工程设计。
---
## 3) 哪个在你当前系统里更容易实现?
如果只比较你给的这两个方案,在你现在的系统里:
- **更简单的是方案 2A/B 双 flag**
- **更值得长期投入的是方案 3所有权移交**。
建议:短期先用方案 2 验证行为边界,最终收敛到方案 3或其等价的零拷贝所有权模型