项目简介
Teisye是一个自定义的内存分配器,其目标是优化内存分配和释放的性能。它基于“相同代码路径会在应用程序生命周期中重复执行,相同内存分配和释放请求会重复出现”这一假设,针对不同大小的内存请求采用不同管理策略,以此提高内存分配和释放的效率。
项目的主要特性和功能
- 线程缓存(thread_cache):利用哈希映射管理小内存块,每个线程有独立缓存,缓存槽为空时向共享缓存请求内存。
- 共享缓存(shared_cache):用于中等大小内存分配,采用与线程缓存相同的数据结构和算法,每个槽使用自旋锁或无锁技术。
- 大内存分配(heap_large):用于大内存分配,支持合并,使用std::atomic实现无锁并发。
- 超大内存分配:直接转发到标准malloc。
- 内存单元(memory_unit):每个内存块都有内存单元作为头部,用于检查内存块合法性、管理内存块状态和大小。
- 性能测试(heapperf):使用高分辨率时钟测量每次分配和释放的成本,并报告统计数据。
安装使用步骤
1. 环境准备
- Windows:需安装Visual Studio 2017或更高版本。
- Linux:需安装GCC 6.3或更高版本。
2. 编译项目
Windows
在Visual Studio IDE中打开项目文件,或在VC++命令行使用以下命令编译:
bash
msbuild /p:Configuration="Release" /p:Platfrom=x64 teisye.sln
Linux
在终端使用以下命令编译:
bash
make clean all
若需编译调试版本或共享库版本,使用以下命令:
bash
make DEBUG=1 clean all
make SHARED=1 clean all
3. 运行性能测试
编译完成后,运行heapperf
测试Teisye的性能,它会测量不同大小内存块的分配和释放时间,并生成详细性能报告。
4. 查看性能报告
性能报告可在benchmarks
目录下找到,每个报告文件对应不同测试环境和配置。可使用scripts/charts.py
脚本生成图表,以便更直观查看性能数据。通过上述步骤,可成功编译并测试Teisye内存分配器的性能,还能根据性能报告进一步优化和调整。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】