1. 程式人生 > >記憶體池和tcmalloc的效能比較

記憶體池和tcmalloc的效能比較

      最近在測試tcmalloc效能的時候發現了一個現象!!!!就是new似乎很消耗效能!!直接上程式碼!

       

#include "time.h"

#include <gperftools/tcmalloc.h>

using namespace std;

 

 

#define MAX_SIZE 500000

 

//MsgDuplex _msg_list;

 

struct MsgToPut

{

     

UINT _wr_ptr;

     UINT _rd_ptr;

     UINT _length;

     CHAR _base[1024];

};

 

 

 

int main()

{

        long long int start = get_os_system_time();

 

    MessageBlock* mbs[MAX_SIZE];

 

    for(int i=0;i<MAX_SIZE;i++)

    {

        mbs[i] = new MessageBlock(1024);

        delete mbs[i];

    }

 

    long long int end = get_os_system_time();

 

    printf("%d\n",end - start);

 

    MsgToPut* mtp[MAX_SIZE];

 

    for(int i=0;i<MAX_SIZE;i++)

    {

        mtp[i] = (MsgToPut*)tc_malloc(sizeof(MsgToPut));

        tc_delete(mtp[i]);

    }

 

    start = get_os_system_time();

 

    printf("%d\n",start - end);

 

 

 

    return 0;

}

  MessageBlock 在博文http://www.cnblogs.com/archy_yu/archive/2012/09/07/2674909.html中有介紹!!!

 我們看下列印資料!

28
10

 既然new在執行的時候運行了建構函式,那麼我們也做一個reset操作; 並且在每次mtp[i] = (MsgToPut*)tc_malloc(sizeof(MsgToPut));之後執行reset函式,但是效果影響不大,列印資料為:

28

12

new 相比malloc 和 tcmalloc要消耗效能!!!而