文档章节

mem-pool VS malloc, new

0-1
 0-1
发布于 2014/03/19 16:01
字数 154
阅读 80
收藏 0
#define BOOST_ALL_NO_LIB
//#define BOOST_LIB_DIAGNOSTIC
#include <iostream>
#include <boost/timer.hpp>
#include <boost/pool/pool.hpp>
#include <libs/system/src/error_code.cpp>

#define BL_SIZE 4
#define TEST_COUNT 100000000

void testMemoryPool()
{
	boost::pool<> memPool(BL_SIZE);
	boost::timer t;
	for (int i = 0; i < TEST_COUNT; ++i)
	{
	char *p = new char[BL_SIZE];
	delete[] p;
	}
	std::cout << "new and delete count: " << TEST_COUNT << ". use time: " << t.elapsed() << " sec." << std::endl;

	t.restart();
	for (int i = 0; i < TEST_COUNT; ++i)
	{
	void *p = malloc(BL_SIZE);
	free(p);
	}
	std::cout << "system malloc and free count: " << TEST_COUNT << ". use time: " << t.elapsed() << " sec." << std::endl;

	t.restart();
	for (int i = 0; i < TEST_COUNT; ++i)
	{
	void *p = memPool.malloc();
	memPool.free(p);
	}
	std::cout << "mempool malloc and free count: " << TEST_COUNT << ". use time: " << t.elapsed() << " sec." << std::endl;
}

int main(void)
{
	testMemoryPool();
	return 0;
}

测试结果(Release版):

 

© 著作权归作者所有

共有 人打赏支持
0-1

0-1

粉丝 92
博文 268
码字总数 145989
作品 0
福州
程序员
对mempool 的看法, 是否有必要实现 mempool

测试系统: 系统:uname -a Linux debian 2.6.32-5-amd64 #1 SMP Mon Jan 16 16:22:28 UTC 2012 x86_64 GNU/Linux cpu: cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 2 Intel(R)......

韩工
2012/03/31
0
0
MySQL · 参数故事 · innodb_additional_mem_pool_size

参数简介 innodbadditionalmempoolsize 是 InnoDB 用来保存数据字典信息和其他内部数据结构的内存池的大小,单位是 byte,参数默认值为8M。数据库中的表数量越多,参数值应该越大,如果 Inno...

阿里云RDS-数据库内核组
2016/04/02
0
0
解决内存碎片问题

**经常的new delete 导致可用内存越来越小, 这就是内存碎块就是内存有各种各样大小不一样的节点 ,长时间在 new delete 这时候操作系统 在内存,上分一块内存给你, 分出去了 好几块,内存紧张...

超级极客
01/04
0
0
InnoDB内存管理源码剖析

InnoDB的内存管理分为3层。1、在底层InnoDB创建一个通用内存池,负责为系统提供小块内存,另外InnoDB还创建缓冲池,可以为系统提供更大块的内存。两者都是向系统申请内存,只申请一次。其中,...

jzzlee
2016/05/04
109
0
[Python源码学习]之内存管理

Python 的内存管理架构(Objects/obmalloc.c): _ [ int ] [ dict ] [ list ] ... [ string ] Python core |+3 | <----- Object-specific memory -----> | <-- Non-object memory --> | _ ......

晨曦之光
2012/05/08
300
0

没有更多内容

加载失败,请刷新页面

加载更多

linux使用ntfs-3g操作ntfs格式硬盘

Linux内核目前只支持对微软NTFS文件系统的读取。 NTFS-3G 是微软 NTFS 文件系统的一个开源实现,同时支持读和写。NTFS-3G 开发者使用 FUSE 文件系统来辅助开发,同时对可移植性有益。 安装 ...

linuxprobe16
今天
1
0
kubeadm部署kubernetes集群

一、环境要求 这里使用RHEL7.5 master、etcd:192.168.10.101,主机名:master node1:192.168.10.103,主机名:node1 node2:192.168.10.104,主机名:node2 所有机子能基于主机名通信,编辑...

人在艹木中
今天
10
0
Shell特殊符号总结以及cut,sort,wc,uniq,tee,tr,split命令

特殊符号总结一 * 任意个任意字符 ? 任意一个字符 # 注释字符 \ 脱义字符 | 管道符 # #号后的备注被忽略[root@centos01 ~]# ls a.txt # 备注 a.txt[root@centos01 ~]# a=1[root@centos01...

野雪球
今天
3
0
OSChina 周二乱弹 —— 程序员圣衣

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @达尔文:分享Skeeter Davis的单曲《The End of the World》 《The End of the World》- Skeeter Davis 手机党少年们想听歌,请使劲儿戳(这里...

小小编辑
今天
20
0
[ python import module ] 导入模块

import moudle_name ----> import module_name.py ---> import module_name.py文件路径 -----> sys.path (这里进行查找文件) # from app.web import Personimport app.web.Person as Pe......

_______-
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部