项目作用
项目目标?
- 解决高频小对象分配下 `new/delete` 开销大、锁竞争明显的问题。
- 体现对操作系统内存管理、缓存分层和并发优化的理解。
- 既能落到代码实现,也能直观展示性能优化带来的工程价值。
Project Showcase
面向高频小对象分配场景,基于 C++ 实现分层内存池,通过 ThreadCache / CentralCache / PageCache / Span 减少系统调用开销与多线程锁竞争。
最佳加速比
平均加速比
测试场景数
项目作用
项目成果
页面数据来自项目运行后生成的 `benchmark_report.json`。当前测试固定为 8 档线程数和 16 档对象大小,共 128 组代表性场景。
架构设计
小对象优先命中线程私有缓存,缓存不足时向共享中心缓存批量申请,再由页缓存按 Span 提供连续内存。
线程本地自由链表,优先命中,减少共享锁竞争。
批量供给与回收对象,平衡线程局部性和全局复用。
按页组织连续内存,切分对象并管理回收边界。
图例对比
每次分配都更频繁地触达通用分配路径,多线程下容易出现锁竞争。
优先复用线程本地空闲对象,批量搬运降低共享访问成本。
项目优势
性能对比
横向对比不同线程数和对象大小下,原生分配器与内存池的耗时差异。
Origin 风格线图
柱状图用于突出局部最优场景,线型图用于观察整体趋势。左图展示不同线程数下默认分配器与内存池的平均耗时变化,右图展示不同对象大小下的平均加速比变化。线型图更适合说明趋势、拐点和稳定性,而不是单个样本的局部波动。
| 线程数 | 对象大小 | 迭代次数 | new/delete | memory pool | 加速比 |
|---|
完成的工作