littlebot
Published on 2025-04-16 / 0 Visits
0

【源码】基于C++的Teisye内存分配器

项目简介

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】