::operator new、sgi stl alloc、dlmalloc测试结果
使用GetTickCount(),测试1000000次的new/delete
分配空间大小为2的幂,依次递增
在Debug模式下
sgi-stl alloc > dlmalloc > ::operator new
在Release模式下
dlmalloc > sgi-stl alloc > ::operator new
以下数据为Release模式下测得
测试程序1
{
Test *p = new Test;
delete p;
}
数据
---------
字节数 ::operator new sgi-stl alloc dlmalloc 次数
< 128 329 156 31 1000000
< 262132 1000 953 31 1000000
> 262132 984 969 15547 1000000
测试程序2
{
Test *p = new Test;
}
数据
---------
字节数 ::operator new sgi-stl alloc dlmalloc 次数
1 422 94 32 1000000
64 484 156 94 1000000
128 547 219 157 1000000
262132 16 失败 844 1024
524264 94 失败 1532 1024
需要说明的是,sgi-stl alloc失败时竟然会报告:
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
O_O!
结论
---------
sgi-stl alloc在<=128 bytes下,成绩约为::operator new的一倍,否则与之相同
可怕的是dlmalloc,几乎都是常数级别
在大量new后马上delete的这种状况下,dlmalloc在<262132下行为同上,而一旦超过,则效率剧降,成绩为::perator new的15倍 =。=b
我想应该是跟算法有关(见侯捷老师的《池内春秋》)
当new时,现存的链表空间不足时,会重新分配构成新的,或者找其他几个“低一级”的要“连续的内存”,然后delete后又会“返还”?!导致的吧。
不管怎样,dlmalloc都会是我的最终选择,Doug Lea 果然不是一般的强,一辈子在搞malloc的人,不一样,就是不一样!admire~
m(_ _)m
::operator new、sgi stl alloc、dlmalloc测试结果相关推荐
- 有关SGI STL的alloc
在STL的使用者层面上,空间配置器一般是隐藏的,使用者不需要知道其具体实现细节即 可进行使用:但是从STL的实现角度来说,由于整个STL的操作对象都存放在容器之内,而容器 需要配置一定的空间来 ...
- SGI STL中的alloc
1. SGI STL实现版本 SGI版本由Silicon Graphics Computer System, Inc公司发展,继承HP版本.所以它的每一个头文件也都有HP的版本声明.此外还加上S ...
- SGI STL 空间配置器
文章目录 一.空间配置器 二.为什么使用空间配置器? 三.construct.h 四.std::alloc的实现 关于std::alloc stl_alloc.h 空间的配置与释放 一级配置器 二级配 ...
- sgi stl 之list
sgi stl 的list实际上是一个双向环形链表 下面是代码 #ifndef C_LIST_H #define C_LIST_H #include "cconstruct.h" ...
- SGI STL 学习笔记二 vector
sequence containers Array Vector Heap Priority_queue List sList(not in standard) Deque Stack Queue S ...
- 【STL深入学习】SGI STL空间配置器详解(一)-第一级空间配置器
一.SGI STL配置器简介 SGI STL的配置器与众不同,它与标准规范不同.如果要在程序中明确使用SGI配置器,那么应该这样写: vector<int,std::alloc> iv; ...
- SGI STL源码剖析——空间配置器
SGI STL源码剖析--空间配置器 前言 空间配置器 SGI空间配置器 内存配置和对象构造 构造和析构 空间的配置和释放 第一级配置器 第二级配置器 空间配置 重新填充 重中之重的内存池 前言 ...
- SGI STL 内存分配方式及malloc底层实现分析
在STL中考虑到小型区块所可能造成的内存碎片问题,SGI STL设计了双层级配置器,第一级配置器直接使用malloc()和free();第二级配置器则视情况采用不同的策略:当配置区块超过128byte ...
- 【STL深入学习】SGI STL空间配置器详解(二)-第二级空间配置器
本文讲解SGI STL空间配置器的第二级配置器. 相比第一级配置器,第二级配置器多了一些机制,避免小额区块造成内存的碎片.不仅仅是碎片的问题,配置时的额外负担也是一个大问题.因为区块越小,额外负担所占 ...
最新文章
- JSP数据交互(一)
- java writestartarray_jackson的基础知识
- 业务逻辑实现方式选择
- install命令和cp命令的区别
- android自定义url协议,Android自定义URL方案…?
- Docker与虚拟机
- 关于Java Collections的几个常见问题
- centos-修改yum下载源为国内阿里源-
- File /usr/bin/pip, line 11, in module sys.exit(__main__._main()) AttributeError: 'module' ob...
- 包/logging模块/hashlib模块/openpyxl模块/深浅拷贝
- 乐高ev3搭建图_乐高编程培训是什么都教啥?2020可编程机器人积木编程推荐,...
- HTML中包含地图和筛选条件,如何实现DedeCMS多条件筛选并以筛选词为标题
- Rust盒子玩家追踪、库存查询、Rust服务器数据统计功能更新
- Git:合并分支----git merge命令应用的三种情景
- MySQL数据库——复杂查询(二)
- AI绘画是什么软件?看完你就知道了
- 【逆向工程】在PE结构空白区段插入代码
- 基于51单片机 + MQ-3酒精传感器 + ADC0832模数转换器 + LCD1602液晶显示器的酒精检测系统
- Qt使用三点坐标画圆弧
- 中兴ACS服务器软件,AAA基本配置:终于成功完成了真实的ACS4.1与模拟PIX软件的交互 实验成功...