博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
tcmalloc jemalloc 和ptmalloc 对比
阅读量:5339 次
发布时间:2019-06-15

本文共 2384 字,大约阅读时间需要 7 分钟。

是glibc的内存分配管理

是google的内存分配管理模块

是BSD的提供的内存分配管理

三者的性能对比参考从网上的一个图如下:

自己测试了一下:

代码如下:

1: #include 
2: #include 
3: 
4: using namespace std;
5: int main(int argc, char**argv) {
6:   cout << "Hello world" << endl;
7:   std::map
int_map;
8:   for (int i = 0; i < 10000000; ++i) {
9:     int_map.insert(std::map
::value_type(i,i));
10:   }
11:   return 0;
12: }

都是执行一个map insert 100W次操作。

为了测试方便,我们生成了3个binary,分别链接使用jemalloc和tcmalloc 和ptmalloc的库做对比:

ldd jemalloc_test

    linux-vdso.so.1 =>  (0x00007fffc6fc3000)
    libjemalloc.so.1 => /usr/local/lib/libjemalloc.so.1 (0x00007f45181aa000)
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f4517ea4000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f4517c1e000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f4517a08000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f4517673000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f4517454000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f4517250000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f45183f2000)

ldd tcmalloc_test

    linux-vdso.so.1 =>  (0x00007fff94160000)
    libtcmalloc.so.0 => /usr/lib/libtcmalloc.so.0 (0x00007f20107dc000)
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f20104d6000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f2010250000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f201003a000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f200fca5000)
    libunwind.so.7 => /usr/lib/libunwind.so.7 (0x00007f200fa8b000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f2010a68000)

ldd ptmalloc_test

    linux-vdso.so.1 =>  (0x00007fff08501000)
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f7e6c156000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f7e6bed1000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f7e6bcba000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f7e6b925000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f7e6c483000)

然后分别执行各程序,使用time统计时间如下:

time./jemalloc_test

Hello world

real    0m9.927s

user    0m9.650s
sys    0m0.250s

time ./tcmalloc_test

Hello world

real    0m9.836s

user    0m9.410s
sys    0m0.410s

time ./ptmalloc_test

Hello world

real    0m11.890s

user    0m11.520s
sys    0m0.360s

 

jemalloc和tcmalloc的性能不分伯仲,而ptmalloc则要低一些。

这里简单介绍下性能。后面抽时间再介绍下各自的实现原理。

refer:

转载于:https://www.cnblogs.com/lovemdx/p/3199886.html

你可能感兴趣的文章
Linux常见命令
查看>>
ASP.NET Page执行顺序如:OnPreInit()、OnInit()
查看>>
linux下编译安装nginx
查看>>
adb命令
查看>>
SQL自定义排序 ORDER BY
查看>>
享元模式(Flyweight)
查看>>
《转载》什么变量在堆内存里存放,什么变量在栈内存里存放
查看>>
iOS开发——常用字符串string相关方法和处理
查看>>
iOS开发——打包ipa
查看>>
数据结构(一)
查看>>
SQL SERVER CURSOR游标的使用(转载)
查看>>
iOS - 导航栏UINavigationController经常使用属性
查看>>
《程序猿面试宝典》精华 底层部分
查看>>
【JQ+锚标记实现点击页面回到顶部】
查看>>
使用jQuery完成记住用户名和密码(个人记录)
查看>>
判断两个字符集是否相同
查看>>
jmeter 01 如何导入https的安全证书
查看>>
如何删除github上的项目
查看>>
[029] 微信公众帐号开发教程第5篇-各种消息的接收与响应(转)
查看>>
爬取淘宝小姐姐头像
查看>>