type
Post
status
Published
date
Apr 14, 2026
slug
mSharp
summary
基于 C++ 的操作系统内存池项目,核心目标是用分级缓存的方式减少频繁
new/delete 带来的系统调用开销和锁竞争。
tags
操作系统
必看精选
category
计算机科学
icon
password
类型
日期
标签
概述
状态
高性能内存池设计项目
基于 C++ 的操作系统内存池项目,核心目标是用分级缓存的方式减少频繁
new/delete 带来的系统调用开销和锁竞争。仓库地址
memory-sharp
Uonlra • Updated Apr 14, 2026
项目示例
项目亮点
- 小对象分配采用
ThreadCache -> CentralCache -> PageCache三层结构。
- 线程本地缓存优先命中,降低多线程下的共享锁竞争。
- 中心缓存按
Span管理对象批量切分与回收。
- 大对象绕过小对象缓存,直接走独立
Span。
- 提供了简单基准测试,方便在复试时演示性能提升。
- 新增可视化展示界面,可直接展示项目成果、架构作用和性能对比。
- 当前 benchmark 固定为
128组代表性场景,兼顾覆盖度、稳定性与展示可读性。
目录结构
include/memory_pool.h:核心接口与数据结构定义。
src/memory_pool.cpp:内存池实现。
src/main.cpp:演示与压测程序。
ui/index.html:项目可视化展示界面。
ui/data/benchmark_report.json:程序生成的性能对比报告。
docs/project_notes.md:知识点清单与面试问题。
docs/vibe_interview.md:按照 vibe coding 风格整理的模拟提问脚本。
如何构建
方式一:直接使用 Makefile
方式二:使用 CMake
可视化界面使用
先运行程序生成最新 benchmark 报告:
然后打开下面这个页面即可查看可视化展示:
ui/index.html页面会突出展示:
- 项目作用与适用场景
- 三层缓存架构与 Span 管理思路
- 默认分配器和内存池的图例对比
- 128 组 benchmark 的柱状图、线型图与加速比趋势
- 复试时可直接讲的项目成果
测试场景说明
当前项目固定采用
128 组代表性测试场景:8档线程数:1, 2, 4, 8, 12, 16, 20, 24
16档对象大小:8, 16, 24, 32, 48, 64, 96, 128, 160, 192, 256, 384, 512, 640, 768, 1024
- 共
8 × 16 = 128组
这样设计的原因是:
- 覆盖线程数和对象大小两个关键维度。
- 比超大规模测试更稳定,单场景运行时间更充分。
- 更适合在页面中通过表格、柱状图和线型图进行展示。
线型图说明
页面中新增了两张用于趋势分析的线型图:
平均耗时 vs 线程数用于观察在不同线程数下,默认分配器和内存池的平均耗时变化。
平均加速比 vs 对象大小用于观察在不同对象大小下,内存池相对于默认分配器的平均性能收益。
- Author:Uonlra
- URL:https://www.uonlra.blog//article/mSharp
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!










