使用Tcmalloc的性能测试结果

2702阅读 0评论2010-01-27 rain_fish
分类:LINUX

使用Tcmalloc的性能测试结果

今天研究了一下tcmalloc的使用,感觉效果惊人,很是激动,特此写出来以飨读者。关于tcmalloc的介绍,参考文章:TCMalloc:线程缓存的Malloc,是从google官方网站翻译出来的。

Tcmalloc的使用很简单,只需要-ltcmalloc_minimal即可。

测试代码:

#include

#include

#include

#include

#include

#include

 

#define MAX_COUNT 1000*1000

void fun(int i)

{

         char* ptr = (char*)malloc(i);

         free(ptr);

}

 

void* fun_thread(void*)

{

         int i = 0;

         int j = 1;

         while(i++

         {

                   j ++;

                   fun(j);

 

                   if ( j>1024 )

                            j = 1;

         }

}

 

#define MSECOND 1000000

int main()

{

 

         struct timeval tpstart,tpend;

         float timeuse;

        

         gettimeofday(&tpstart,NULL);

 

         pthread_t _deliver_t;

 

         pthread_create(&_deliver_t, NULL, fun_thread, NULL);

         int i = 0;

         int j = 1;

         while(i++

         {

                   j ++;

                   fun(i);

                   if ( j > 1024 )

                            j = 1;

                   //usleep(1);

         }

        

         gettimeofday(&tpend,NULL);

 

         timeuse=MSECOND*(tpend.tv_sec-tpstart.tv_sec)+tpend.tv_usec-tpstart.tv_usec;

         timeuse/=MSECOND;

         printf("Used Time:%f\n", timeuse);

 

         return 0;

}

 

测试结果很是诱人:

[root@localhost test]# g++ 1.c -o 1 -lpthread

[root@localhost test]# ./1

Used Time:5.336594

[root@localhost test]# g++ 1.c -o 1 -lpthread -ltcmalloc_minimal

[root@localhost test]# ./1

Used Time:0.208050

 

提高了几十倍!当然测试的条件不是很完整,但是可以肯定tcmalloc效率提高了很多

上一篇:关于程序有选择的使用静态库和动态库的方法
下一篇:使用unixodbc连接 ORACLE数据库的配置方法