使用Tcmalloc的性能测试结果报告,比malloc有大幅度提高

使用Tcmalloc的性能测试结果

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

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

测试代码:

#include <stdlib.h>

#include <stdio.h>

#include <unistd.h>

#include <time.h>

#include <sys/time.h>

#include <pthread.h>



#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++<MAX_COUNT)

         {

                   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++<MAX_COUNT)

         {

                   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效率提高了很多

你可能感兴趣的:(使用Tcmalloc的性能测试结果报告,比malloc有大幅度提高)