TCMalloc比glibc 2.3 malloc即ptmalloc快,一个malloc/free操作对使用ptmalloc要300ns,而使用tcmalloc只要50ns
这样看来ptmalloc很慢,所以很多应用都倾向于自己管理由自己定制的空闲链表,这通常会消耗更多的内存。
除了速度快之外,TCmalloc还有很多优点
1. tcmalloc减少了多线程程序的锁竞争,对于小对象几乎没有竞争,对于大对象采用精化的高效旋转锁。ptmalloc2减少竞争是通过使用 【每线程-内存区】,但是由于这个实现的限制,内存不能跨内存区移动,这样会浪费空间, 例如在Google的一个应用由几个初始化阶段组成,第一阶段要分配300M的内存存储应用所需数据结构,到了第二阶段,如果为第二阶段分配到了另一个内存区,那么就无法重用第一阶段没用完剩下的内存。
2.tcmalloc另外一个好处是表示小对象的空间效率高,只会增加1%的内存开销,而ptmalloc2为每一个小对象增加一个4字节头部。