Project Showcase

高性能内存池设计与实现

面向高频小对象分配场景,基于 C++ 实现分层内存池,通过 ThreadCache / CentralCache / PageCache / Span 减少系统调用开销与多线程锁竞争。

C++17 并发优化 内存管理 可视化展示

最佳加速比

--

平均加速比

--

测试场景数

--

项目作用

项目目标?

  • 解决高频小对象分配下 `new/delete` 开销大、锁竞争明显的问题。
  • 体现对操作系统内存管理、缓存分层和并发优化的理解。
  • 既能落到代码实现,也能直观展示性能优化带来的工程价值。

项目成果

项目重点

128 组 benchmark 本地可运行演示程序 可视化展示界面 性能对比报告输出

页面数据来自项目运行后生成的 `benchmark_report.json`。当前测试固定为 8 档线程数和 16 档对象大小,共 128 组代表性场景。

架构设计

分层路径与职责

小对象优先命中线程私有缓存,缓存不足时向共享中心缓存批量申请,再由页缓存按 Span 提供连续内存。

01

ThreadCache

线程本地自由链表,优先命中,减少共享锁竞争。

02

CentralCache

批量供给与回收对象,平衡线程局部性和全局复用。

03

PageCache / Span

按页组织连续内存,切分对象并管理回收边界。

图例对比

默认分配器 vs 内存池

默认 `new/delete`

每次分配都更频繁地触达通用分配路径,多线程下容易出现锁竞争。

Memory Pool

优先复用线程本地空闲对象,批量搬运降低共享访问成本。

项目优势

项目亮点

  • 有清晰的分层设计,不只是简单 free list。
  • 有性能对比,有数据支撑,不是纯概念项目。
  • 能继续扩展到页号映射、Span 合并拆分等工业级能力。

性能对比

Benchmark Dashboard

横向对比不同线程数和对象大小下,原生分配器与内存池的耗时差异。

-- 测试场景
-- 最佳场景

Origin 风格线图

趋势线说明

柱状图用于突出局部最优场景,线型图用于观察整体趋势。左图展示不同线程数下默认分配器与内存池的平均耗时变化,右图展示不同对象大小下的平均加速比变化。线型图更适合说明趋势、拐点和稳定性,而不是单个样本的局部波动。

默认 `new/delete` 平均耗时
Memory Pool 平均耗时
平均加速比趋势

平均耗时 vs 线程数

平均加速比 vs 对象大小

前12组最佳测试数据(点击查看具体测试数据) 点击展开 / 折叠
线程数 对象大小 迭代次数 new/delete memory pool 加速比

完成的工作

工程升级内容

  • 将 benchmark 收敛为 128 组代表性测试场景并自动输出 JSON 报告。
  • 新增可视化页面,展示成果、架构、作用和性能优势。
  • 补齐图例与线型图说明,让趋势分析更直观。