日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

内存池和tcmalloc的性能比较

發布時間:2024/4/17 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 内存池和tcmalloc的性能比较 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這次使用的內存池是原公司的,利用hash_map做的,大概的接口是這樣:


template <class CObject> class ObjectPool { <br>public:<br> typedef hash_map<int64_t,ObjectBlock*> BlockMap;virtual int pop(CObject *&ob);virtual int push(const CObject *ob);<br>private:<br> BlockMap _block_map; };
寫測試代碼比較了一下內存池和tcmalloc的差距!結果挺讓人吃驚!


#define MAX_SIZE 50000struct MsgToPut {UINT _wr_ptr;UINT _rd_ptr;UINT _length;CHAR _base[1024];void reset(){this->_rd_ptr = this->_wr_ptr = 0;this->_length = 1024;} };ObjectPool<MsgToPut> MsgPool;void* newthread(void* argv) {long long int start = get_os_system_time();for(int i=0;i<MAX_SIZE;i++){MsgToPut* msg;MsgPool.pop(msg);if(msg == NULL){printf("error\n");}}long long int end = get_os_system_time();printf("newthread ObjectPool:%d\n",end - start);MsgToPut* mtp[MAX_SIZE];for(int i=0;i<MAX_SIZE;i++){mtp[i] = (MsgToPut*)tc_malloc(sizeof(MsgToPut));mtp[i]->reset();}start = get_os_system_time();printf("newthread tc malloc :%d\n",start - end);return (void*)0; }int main() {pthread_t pid;pthread_create(&pid,NULL,newthread,NULL);pthread_create(&pid,NULL,newthread,NULL);pthread_create(&pid,NULL,newthread,NULL);long long int start = get_os_system_time();for(int i=0;i<MAX_SIZE;i++){MsgToPut* msg = NULL;MsgPool.pop(msg);if(msg == NULL){printf("error\n");}}long long int end = get_os_system_time();printf("main ObjectPool:%d\n",end - start);MsgToPut* mtp[MAX_SIZE];for(int i=0;i<MAX_SIZE;i++){mtp[i] = (MsgToPut*)tc_malloc(sizeof(MsgToPut));mtp[i]->reset();}start = get_os_system_time();printf("main tc malloc :%d\n",start - end);return 0; }

普遍打印數據為:

newthread ObjectPool:189
newthread ObjectPool:202
newthread tc malloc :24
newthread tc malloc :20
main ObjectPool:235
newthread ObjectPool:235
main tc malloc :21
newthread tc malloc :22


總結

以上是生活随笔為你收集整理的内存池和tcmalloc的性能比较的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。