jemalloc与普通malloc性能对比测试

本次测试通过一个简单的内存分配释放程序进行,一共分三种情况:
(1)程序无修改,正常编译,使用系统自带的malloc和free,正常运行
(2)程序有修改,在程序中显示使用jemalloc库
(3)程序无修改,正常编译,运行前通过LD_PRELOAD环境变量提前加载jemalloc库

程序源码:

根据前文说的三种情况,共需要编译出两种二进制文件:

得到a1.out为显示使用jemalloc的版本,a2.out为正常版本。

测试方法:
(1)直接运行a1.out,可以得出显式使用jemalloc时的执行时间
(2)直接运行a2.out,可以得到使用普通malloc时的执行时间
(3)通过LD_PRELOAD环境变量执行a2.out,可以得到普通程序使用jemalloc时的执行时间:

得到三组数据如下:

可以看到,在申请和释放随机大小的内存块时,使用jemalloc的性能明显好于普通malloc,性能提升约27.5%。

如果将程序源码中的size = rand() & 0x0000000000000fff;一行注释掉,让程序申请固定大小的内存块,得到三组数据:

这种情况下使用jemalloc比普通malloc版本的性能提升将近一倍,同时比各自的随机大小内存块版本提升大约也有三四倍。

测试版本:
jemalloc:直接从github下载编译,从时间上看应该是5.1.0版本左右
glibc: 2.17-222.e17

————————————————————

原创文章,转载请注明: 转载自孙希栋的博客

本文链接地址: 《jemalloc与普通malloc性能对比测试》

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Scroll Up