文档章节

mem-pool VS malloc, new

0-1
 0-1
发布于 2014/03/19 16:01
字数 154
阅读 79
收藏 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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Shell | linux安装包不用选择Y/N的方法

apt-get install -y packageOR echo "y" | sudo apt-get install package

云迹
4分钟前
0
0
Hadoop的大数据生态圈

基于Hadoop的大数据的产品圈 大数据产品的一句话概括 Apache Hadoop: 是Apache开源组织的一个分布式计算开源框架,提供了一个分布式文件系统子项目(HDFS)和支持MapReduce分布式计算的软件架...

zimingforever
19分钟前
1
0
八大包装类型的equals方法

先看其中一个源码 结论:八大包装类型的equals方法都是先判断类型是否相同,不相同则是false,相同则判断值是否相等 注意:包装类型不能直接用==来等值比较,否则编译报错,但是数值的基本类型...

xuklc
43分钟前
1
0
NoSQL , Memcached介绍

什么是NoSQL 非关系型数据库就是NoSQL,关系型数据库代表MySQL 对于关系型数据库来说,是需要把数据存储到库、表、行、字段里,查询的时候根据条件一行一行地去匹配,当量非常大的时候就很耗...

TaoXu
昨天
0
0
890. Find and Replace Pattern - LeetCode

Question 890. Find and Replace Pattern Solution 题目大意:从字符串数组中找到类型匹配的如xyy,xxx 思路: 举例:words = ["abc","deq","mee","aqq","dkd","ccc"], pattern = "abb"abc ......

yysue
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部