C++ STL内存池的效果
来源:互联网 发布:小五的网络意思 编辑:程序博客网 时间:2024/05/08 03:37
<pre name="code" class="cpp">#include<vector>#include<sys/time.h>#include<stdlib.h>#include<iostream>using namespace std; class A{ public: A(){ a=3; } private: int a; };int main(){ struct timeval pre; struct timeval now; vector<A> v; vector<A*> vp; gettimeofday(&pre, 0); for(int i = 0; i < 1000000; i++) { A ca; v.push_back(ca); } gettimeofday(&now, 0); unsigned long tv =( now.tv_sec*1000000 + now.tv_usec \ - pre.tv_sec*1000000 - pre.tv_usec); cout<<tv<<endl; gettimeofday(&pre, 0); for(int i = 0; i<1000000; i++) { vp.push_back(new A()); } gettimeofday(&now, 0); tv =( now.tv_sec*1000000 + now.tv_usec \ - pre.tv_sec*1000000 - pre.tv_usec); cout<<tv<<endl;}
21603
70920
1. 因为STL内存池的使用, 提高了效率。
</pre></p>
#include<vector>#include<sys/time.h>#include<stdlib.h>#include<iostream>using namespace std; class A{ public: A(){ a=3; } private: int a; <span style="color:#cc0000;"> int b[1000];--------------------------------------------------------------------</span> };int main(){ struct timeval pre; struct timeval now; vector<A> v; vector<A*> vp; gettimeofday(&pre, 0); for(int i = 0; i <<span style="color:#cc0000;"> 100</span>; i++) <span style="background-color: rgb(255, 255, 255);"><span style="color:#cc0000;">-----------------------------------------------</span></span> { A ca; v.push_back(ca); } gettimeofday(&now, 0); unsigned long tv =( now.tv_sec*1000000 + now.tv_usec \ - pre.tv_sec*1000000 - pre.tv_usec); cout<<tv<<endl; gettimeofday(&pre, 0); for(int i = 0; i<100; i++) { vp.push_back(new A()); } gettimeofday(&now, 0); tv =( now.tv_sec*1000000 + now.tv_usec \ - pre.tv_sec*1000000 - pre.tv_usec); cout<<tv<<endl;}
462
64
2. 因为vector的push_back函数需要拷贝输入变量,当输入变量体积大时,此函数造成整体效率较低。
总结:STL中容器使用到了内存池,增加成员时从内存的角度STL做了两件事:1. 从内存池中分配内存,2. 拷贝输入变量值。
当输入变量体积大时,拷贝成为拖累。
0 0
- C++ STL内存池的效果
- STL内存管理的C实现
- SGI STL的内存池
- SGI STL的内存池
- SGI STL的内存池
- SGI STL的内存池
- C++ STL deque 内存布局
- [C++][STL]容器的capacity、max_size以及内存分配
- [C++][STL]容器的capacity、max_size以及内存分配
- 基于STL的内存池类
- c++STL内存池和空间配置器
- STL的内存分配器
- stl的内存管理
- STL的内存分配器
- STL的内存分配器
- STL的内存分配器
- STL的内存管理
- STL的内存分配器
- 抽象基类
- 黑马程序员——[OC]01-OC的初步认识(简单程序)
- POJ 1308 Is it a tree
- vs2012 调试注意事项
- 常用网页头部meta标签收集和整理
- C++ STL内存池的效果
- Cookie/Session机制详解
- 浏览器安装vlc插件播放rtsp流
- 焦点获取之思路
- UICollectionView使用小结
- Android -- 环境搭建及程序运行
- new blog
- 文件系统管理
- 【poj 2187】Beauty Contest