boost pool是个不错的库,可以省点内存管理功夫,内存池分配内存,还可以速度上比malloc更快一些。
boost::object_pool主要针对,对象的内存分配,他可以像使用new 一样来创建对象,对象的内存放在object_pool里面。
实际上object_pool使用pool类,代码上是object_pool继承pool类,object_pool比pool多些什么呢,多的就是new 比malloc多的那些内容.
object_pool::construct完成类的内存分配和建构,object_pool::destroy完成类的析构和内存释放。

看看实际例子:

#include "stdafx.h"
#include <malloc.h>
#include <boost/pool/object_pool.hpp>
#include <boost/serialization/singleton.hpp>
#include <boost/thread/mutex.hpp>
#include <boost/timer.hpp>class ObjectMgr;
typedef boost::unique_lock<boost::mutex> WriteLock;
typedef boost::serialization::singleton<ObjectMgr> ObjectMgrFactory;struct myObject
{int a;char b;myObject (){a=0;b=0;}
};class ObjectMgr
{
public:myObject* CreateNewObject(myObject o){WriteLock wl(mt);return pool.construct(o);}void free(myObject *po){WriteLock wl(mt);if (pool.is_from(po)){pool.destroy(po);}}private:boost::object_pool<myObject> pool;boost::mutex mt;
};int _tmain(int argc, _TCHAR* argv[])
{boost::timer t;for (int i=0;i<20*1024*1024;i++){myObject to;to.a = 2*i;to.b = i;//方式一: objectpool  debug:14.553秒 260兆         release:0.674秒 260兆//ObjectMgrFactory::get_mutable_instance().CreateNewObject(to);//方式二: new         debug:14.91秒 1420兆         release:11.815秒 610兆//myObject *pmyObject = new myObject(to);//方式三: malloc      debug:14.926秒 1400兆         release:11.737秒 630兆//myObject *pmyObject = (myObject *)malloc(sizeof(myObject));//方式四: pool        debug:59.235秒 0兆            release:22.116秒 630兆boost::pool<> pObj(sizeof(myObject));myObject *pmyObject = (myObject *)pObj.malloc();}std::cout << "use time "<<t.elapsed()<<std::endl;return 0;
}

总结:

1.无论哪种方式的申请内存,占用空间都比有用空间大点,实际有用空间:8字节 * 20*1024*204 = 160兆

2.new和malloc无论在debug还是release下,占用内存资源和CPU资源都差不多

3.使用boost中的object_pool无论从内存消耗还是从速率上来讲都比new和malloc好,尤其是使用release的时候分配资源的速度

4.在操作大数据的时候,最好使用boost中的boost_pool

BOOST内存管理(一) --- boost::object_pool相关推荐

  1. BOOST内存管理(二) --- boost::pool

    Boost库的pool提供了一个内存池分配器,用于管理在一个独立的.大的分配空间里的动态内存分配.Boost库的pool主要适用于快速分配同样大小的内存块,尤其是反复分配和释放同样大小的内存块的情况. ...

  2. linux boost内存池,C++ boost库教程之内存池

    Boost  Pool 库提供了一个内存池分配器,它是一个工具,用于管理在一个独立的.大的分配空间里的动 态内存.当你需要分配和回收许多不的对象或需要更高效的内存控制时,使用内存池是一个好的 解决方案 ...

  3. C++大法:举世闻名之BOOST大法精华浅析(三)内存管理库(小白piao分享)

    文章目录 三.内存管理库 3.1 smart_ptr 3.1.1 RAII机制 3.1.2 智能指针 3.1.3 scoped_ptr 3.1.4 scoped_array 3.1.5 shared_ ...

  4. (六)boost库之内存管理shared_ptr

    1.shared_ptr的基本用法 boost::shared_ptr<int> sp(new int(10)); //一个指向整数的shared_ptr assert(sp.unique ...

  5. boost之内存管理

    smart_ptr库概述 计算机系统中资源有很多种,内存是我们最常用到的,此外还有文件描述符.socket.操作系统handle.数据库连接等,程序里申请这些资源后必须及时归还系统,否则就会产生难以预 ...

  6. Boost学习笔记(一)——Boost使用基础、内存管理

    一.Boost使用基础 Boost库的大部分组件(90%左右),不需要进行编译,直接包含头文件即可使用. #include <boost/logic/tribool.hpp> using ...

  7. linux boost内存池,开源C++函数库Boost内存池使用与测试

    [IT168 专稿]Boost库是一个可移植的开源C++函数库,鉴于STL(标准模板库)已经成为C++语言的一个组成部分,可以毫不夸张的说,Boost是目前影响最大的通用C++库.Boost库由C++ ...

  8. 重写boost内存池

    最近在写游戏服务器网络模块的时候,需要用到内存池.大量玩家通过tcp连接到服务器,通过大量的消息包与服务器进行交互.因此要给每个tcp分配收发两块缓冲区.那么这缓冲区多大呢?通常游戏操作的消息包都很小 ...

  9. boost:进程管理

    概述 Boost.Process提供了一个灵活的C++ 进程管理框架.它允许C++ developer可以像Java和.Net程序developer那样管理进程.它还提供了管理当前执行进程上下文.创建 ...

最新文章

  1. 互联网秒杀设计--转载
  2. 微信小程序中WebView中原生组件限制问题解析
  3. 数学大神攻克猜字游戏Wordle,求解算法成绩逼近理论极限,连信息论都用上了...
  4. 【bzoj3524】【Poi2014】【Couriers】可持久化线段树(主席树)水题
  5. 【IOC 控制反转】Android 视图依赖注入 ( 视图依赖注入步骤 | 视图依赖注入代码示例 )
  6. conversation:in Good common
  7. Winform 自定义窗体皮肤组件
  8. 多重背包单调队列优化思路_动态规划入门——多重背包与单调优化
  9. Redis持久化的几种方式——深入解析RDB
  10. mysql-front5.1的注册码
  11. 小福利,PMP考试真题刷起来,人人都当项目管理大师!
  12. 2022年最新京东滑块验证码破解思路(算法过验)
  13. Maven依赖冲突避坑指北
  14. 笔记本此计算机到网络出现一个叉,笔记本电脑无线网络不可用并显示红叉的解决方...
  15. 外卖联盟高级接口 - 美团联盟接口 美团外卖CPS+CPA推广活动推广API接口
  16. 病毒乱花迷人眼,勿把“VX”当“全信”
  17. QIIME2进阶五_QIIME2扩增子基因序列多样性分析
  18. linux centos 查看内存使用情况
  19. LDAP基础:3:通过389端口对openldap进行操作
  20. Python抓取第一网贷中国网贷理财每日收益率指数

热门文章

  1. vue指令-单向和双向绑定
  2. class文件的产生过程
  3. 初始springCloud
  4. springboot No Java compiler available for configuration options compilerClassName
  5. SpringBoot https访问控制
  6. Linux Capabilities 入门教程--概念篇
  7. python中类的定义方法_在Python中定义类变量的正确方法
  8. 面试官问你“有什么问题问我吗?”,你该如何回答?
  9. 第 25 章 OpenManage
  10. 下一代网络安全将全部基于行为识别