锁定老帖子 主题:memory pool 的高效实现(代码)
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
作者 | 正文 | ||||||||||||||||||||||||||||||||
发表时间:2009-10-23
最后修改:2009-10-26
mpool.h mpool.c
BenchMark
|
time in us |
std::allocator(new/delete) |
fixed_mpool |
fast ratio |
alloc |
93901 |
15416 |
6.091139 |
free |
70657 |
7374 |
9.581909 |
alloc+free |
131739 |
9297 |
14.170055 |
Linux
uname:
Linux 2.6.9-78.ELsmp #1 SMP Wed Jul 9 15:46:26 EDT 2008 x86_64 x86_64 x86_64 GNU/Linux
time in us |
std::allocator(pooled) |
fixed_mpool |
fast ratio |
alloc |
92779 |
26734 |
3.470450 |
free |
42564 |
17224 |
2.471203 |
alloc+free |
50089 |
9088 |
5.511554 |
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
发表时间:2009-10-23
又一个轮子。
发表时间:2009-10-23
请问 怎么个高效法? 有benchmark么?
发表时间:2009-10-24
mathgl 写道
请问 怎么个高效法? 有benchmark么?
比 gcc.stl.pool_allocator 快一倍
发表时间:2009-10-24
linkerlin 写道
又一个轮子。
有好轮子可用,我不会去再发明。我需要一个C版的mpool,stlport.mpool不错,只可惜是C++版的。其它的:apache.apr.mpool, nginx.mpool,还有其它几个不知名的,都没有达到我期望的功能和性能。它们都没有体现剃刀原理。最小功能集,最大约束集,其结果就是最高性能级。
发表时间:2009-11-06
我觉得可以整理一下,到 google code 上面去建立一个项目吧。
发表时间:2009-11-06
测试要充分哦;还是支持哈!
希望真的快一倍
但是不能简单测试开一倍
我做java的我写个简单的远程访问绝对比现在很多流行的快10倍
但是功能就,容错就
支持,但是要仔细
希望真的快一倍
但是不能简单测试开一倍
我做java的我写个简单的远程访问绝对比现在很多流行的快10倍
但是功能就,容错就
支持,但是要仔细
发表时间:2009-11-07
快的不少 不过稳定吗? 在多多测试下~!
就lz的劳动成果 表示佩服 呵呵
就lz的劳动成果 表示佩服 呵呵
发表时间:2009-11-10
whaosoft 写道
快的不少 不过稳定吗? 在多多测试下~!
就lz的劳动成果 表示佩服 呵呵
就lz的劳动成果 表示佩服 呵呵
目前很稳定,在febird.trb_tree 中的应用取得了非常好的效果,cache命中率比malloc/free/std::allocator 高很多——从测试程序的查找bench可以看出来!
{map|set|tab|strmap}但是,从设计之初,为了性能,我决定不支持多线程,因为一牵涉到线程,就太dirty了。
代码已有更新,在google code上了
http://code.google.com/p/febird/source/browse/trunk/febird/src/febird/c/mpool.c
http://code.google.com/p/febird/source/browse/trunk/febird/src/febird/c/mpool.h
另有针对 std::allocator concept 的包装和 allocator to sallocator bridge,代码都很短:
http://code.google.com/p/febird/source/browse/trunk/febird/src/febird/mpoolxx.h
febird.trb 使用 mpool的测试程序:
http://code.google.com/p/febird/source/browse/trunk/febird/vcproj/test_trb/test_trb_cxx.cpp
发表时间:2009-11-10
iunknown 写道
我觉得可以整理一下,到 google code 上面去建立一个项目吧。
已经在 http://code.google.com/p/febird 上了,其中还有其它很多好东西
http://code.google.com/p/febird/source/browse/trunk/febird/src/febird/c/mpool.c
http://code.google.com/p/febird/source/browse/trunk/febird/src/febird/c/mpool.h
另有针对 std::allocator concept 的包装和 allocator to sallocator bridge,代码都很短:
http://code.google.com/p/febird/source/browse/trunk/febird/src/febird/mpoolxx.h
febird.trb 使用 mpool的测试程序:
http://code.google.com/p/febird/source/browse/trunk/febird/vcproj/test_trb/test_trb_cxx.cpp