文档章节

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版):

 

© 著作权归作者所有

共有 人打赏支持
上一篇: c thread demo
下一篇: 两值交换
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): 0. C语言库函数提供的接口 1. PyMem_*家族,是对 C中的 malloc、realloc和free 简单的封装,提供底层的控制接口。 2. PyObject_* 家族,高级...

晨曦之光
2012/05/08
311
0

没有更多内容

加载失败,请刷新页面

加载更多

Confluence 6 修改导航显示选项

选择 子页面(Child pages)来在边栏中查看当前页面的子页面。 选择 页面树(Page tree)来查看整个空间的页面树,扩展当前的页面。 你也可以选择是否完全隐藏导航显示选项或者添加你希望可见...

honeymose
24分钟前
0
0
Ubuntu18.04 安装MySQL

1.安装MySQL sudo apt-get install mysql-server 2.配置MySQL sudo mysql_secure_installation 3.设置MySQL非root用户 设置原因:配置过程为系统root权限,在构建MySQL连接时出现错误:ERROR...

AI_SKI
今天
3
0
3.6 rc脚本(start方法) 3.7 rc脚本(stop和status方法) 3.8 rc脚本(以daemon方式启动)

3.6-3.7 rc脚本(start、stop和status方法) #!/usr/bin/env python# -*- coding: utf-8 -*-# [@Version](https://my.oschina.net/u/931210) : python 2.7# [@Time](https://my.oschina.......

隐匿的蚂蚁
今天
3
0
Cnn学习相关博客

CNN卷积神经网络原理讲解+图片识别应用(附源码) 笨方法学习CNN图像识别系列 深度学习图像识别项目(中):Keras和卷积神经网络(CNN) 卷积神经网络模型部署到移动设备 使用CNN神经网络进行...

-九天-
昨天
5
0
flutter 底部输入框 聊天输入框 Flexible

想在页面底部放个输入框,结果键盘一直遮住了,原来是布局问题 Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("评论"), ...

大灰狼wow
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部