Files
ldb/doc/conclusion.md
2026-03-05 08:45:23 +00:00

51 lines
2.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 性能定位结论(主线程)
## 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或其等价的零拷贝所有权模型