锁定老帖子 主题:memory pool 的高效实现(代码)
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-12-02
mp->max_cell_size = (mp->max_cell_size + MPOOL_MIN_CELL - 1) / MPOOL_MIN_CELL * MPOOL_MIN_CELL; 为什么要 除以 2次 MPOOL_MIN_CELL? |
|
返回顶楼 | |
发表时间:2009-12-02
sunzixun 写道 mp->max_cell_size = (mp->max_cell_size + MPOOL_MIN_CELL - 1) / MPOOL_MIN_CELL * MPOOL_MIN_CELL; 为什么要 除以 2次 MPOOL_MIN_CELL? 对齐到 MPOOL_MIN_CELL,整数除一次乘一次就把余数去掉了 |
|
返回顶楼 | |
发表时间:2009-12-02
lz可以做一下多线程下的效率测试.
简单说定制的memory pool肯定是最快的,但是通用的因为考虑的东西多所以效率上肯定要差一点. 而且自己写的memory pool缺乏自我调适机制,会让你的程序在排查leak的时候增加难度. |
|
返回顶楼 | |
发表时间:2009-12-02
目前不支持多线程,keep it simple stupid.
多线程需要考虑的东西太多了,每次alloc/free都加锁,开销太大,仅在溢出时才加锁,又太复杂。真需要多线程,还是用通用的。 |
|
返回顶楼 | |
发表时间:2009-12-02
febird 写道 目前不支持多线程,keep it simple stupid.
多线程需要考虑的东西太多了,每次alloc/free都加锁,开销太大,仅在溢出时才加锁,又太复杂。真需要多线程,还是用通用的。 如果这样,那么应用的范围就会小很多,类似bucket的memory pool实现挺多,一般都是考虑多线程的. 不过能动手自己做一个,总是好的~ btw,我也喜欢自己在程序中自己写memory pool,一个吗是买商业的太贵,二则也是觉得自己写一个用起来方便。 另外还有一个很大的好处,可以把memory的错误统一处理掉,上层代码可以简练很多. |
|
返回顶楼 | |
发表时间:2010-04-07
樓主非常牛逼
|
|
返回顶楼 | |
发表时间:2010-04-08
单线程也没啥不好。。用co routine 用消息传递 信息好了嘛...
|
|
返回顶楼 | |