关于tcmalloc\malloc和new
最近在测试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要消耗性能!!!而且很客观!!!
转载于:https://www.cnblogs.com/archy_yu/archive/2013/03/22/2976137.html
关于tcmalloc\malloc和new相关推荐
- TCMalloc(Thread-Caching malloc) 基本设计原理
文章目录 背景 如何使用 架构概览 1. TCMalloc Front-end 1.1 小对象和大对象的内存分配过程 1.2 内存释放过程 1.3 Per-CPU mode 1.4 Per-threa ...
- 利用TCMalloc替换Nginx和Redis默认glibc库的malloc内存分配
TCMalloc的全称为Thread-Caching Malloc,是谷歌开发的开源工具google-perftools中的一个成员.与标准的glibc库的Malloc相比,TCMalloc库在内存分 ...
- TCMalloc:线程缓存的Malloc
转载自: http://shiningray.cn/tcmalloc-thread-caching-malloc.html 作者:Sanjay Ghemawat, Paul Menage 原文 翻译: ...
- TCMalloc:线程缓存Malloc以及tcmalloc与ptmalloc性能对比
目录 动机 用法 总览 小对象分配 大对象分配 跨度 解除分配 小型物品中央free清单 线程缓存的垃圾收集 性能说明 PTMalloc2单元测试 注意事项 推荐阅读 Paul Menage的Sanj ...
- TCMalloc : Thread-Caching Malloc
TCMalloc : Thread-Caching Malloc http://goog-perftools.sourceforge.net/doc/tcmalloc.html http://blog ...
- 【译】TcMalloc: Thread-Caching Malloc
TcMalloc 的核心是分层缓存,前端没有锁竞争,可以快速分配和释放较小的内存对象(一般是 256 KB)前端有两种实现,分别是 pre-CPU 和 pre-Thread 模式,前者申请一块大的连续 ...
- tcmalloc mysql 缓存_Tcmalloc优化Mysql内存管理
实验环境: OS:Redhat 5.3 64bit Mysql:mysql 5.5.29 TCMalloc(Thread-Caching Malloc)与标准glibc库的malloc实现一样的功能, ...
- Redis源码分析-TCMalloc
redis很多地方都在调用zmalloc函数 zmalloc在这里定义zmalloc.c void *zmalloc(size_t size) {void *ptr = malloc(size+PRE ...
- 在应用程序中替换Linux中Glibc的malloc的四种方法
打算优化系统的内存分配,接管glibc提供的内存管理,但是整个工程的代码量很大,使用malloc.realloc.calloc和free的地方到处都是,如果自己写好的接口需要重命名所有的调用,先不说工 ...
最新文章
- HTML 全局属性(global attribute)有哪些?
- ios计算机隐藏功能,7个iOS14隐藏功能,看完想立马更新,有你不知道的
- Java 和 HTTP 的那些事(四) HTTPS 和 证书
- 解决安装python第三方模块 '-mno-cygwin'报错的问题
- 如何让控件span的id调用ajax_微服务架构之「 调用链监控 」
- andriod 继承view定义自己的形状
- linux网络编程二十:socket选项:SO_RCVTIMEO和SO_SNDTIMEO
- 冷热分离和直接使用大数据库_还不知道HBase冷热分离的技术原理?看这一篇就够了...
- Logger对象父子关系
- DOMContentLoaded与interactive
- 数据库oracle修改属性列,Oracle修改表结构
- Linux下Shell脚本运行程序不输出日志到终端
- linux多进程通过中断实现,关于Linux内核源码中是如何区别进程上下文和中断上下文...
- 2018达内web全套视频
- 基于D-S证据理论的数据融合研究与应用
- 一款简约大气的PHP短网址系统程序源码
- 使用Python face_recognition 人脸识别 - 12 人脸图片1-N比对
- abap SD 定价公式(例程,即Formula)
- Oracle 后台进程详解
- 解决Adobe Reader 打开PDF文件10秒左右自动关闭问题