基准报告:分析内存分配器中的时空权衡(hakozuna vs tcmalloc)

发布: (2026年1月19日 GMT+8 11:17)
3 min read
原文: Dev.to

Source: Dev.to

hakozuna repository

基准概览

一个自定义内存分配器 hz3(称为 hakozuna)与两个业界标准分配器进行评估:

  • tcmalloc(Google)
  • mimalloc(Microsoft)

重点在于执行速度与内存占用(RSS)之间的权衡。

测试环境

  • CPU: AMD Ryzen 9 9950X
  • 每个测试的运行次数: 5(报告中位数)

结果

1. Espresso(真实场景模拟)

分配器时间RSS备注
tcmalloc2.43 s9.7 MB最快,但内存使用最高
mimalloc2.45 s4.0 MB平衡
hakozuna2.75 s2.6 MB最慢(+13 %),但内存最低

2. Alloc‑test(合成测试)

分配器时间RSS备注
tcmalloc1.99 s18.2 MB
mimalloc2.00 s22.0 MB
hakozuna2.51 s14.5 MB占用最小

分析

速度的代价

  • tcmalloc 在两个基准测试中都实现了最快的执行时间。
  • 它消耗的内存显著更多(在 Espresso 测试中 RSS 大约高出 3.7 倍:9.7 MB 对比 2.6 MB)。
  • 该分配器在线程本地存储中积极缓存已释放的内存,最小化锁定和 CPU 开销,但以更大的内存占用为代价。

节约的代价

  • hakozuna 始终记录了最低的 RSS。
  • 这是因为其采用了积极的清理策略,将未使用的页面返回给操作系统,并且元数据设计紧凑。
  • 内存使用的降低伴随着执行时间的适度增加。

选择合适的分配器

  • 对延迟敏感且内存充足的应用:tcmalloc 或 mimalloc 仍是更佳选择。
  • 内存受限的环境(例如高密度微服务、嵌入式系统):hakozuna 通过显著降低内存消耗提供了可行的替代方案,接受轻微的 CPU 惩罚。

结论

该基准测试强调,“性能”并非单一指标。它始终是 时间(执行速度)与 空间(内存使用)之间的平衡。选择分配器应依据目标工作负载的具体优先级来决定。

Back to Blog

相关文章

阅读更多 »