注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

mie

 
 
 

日志

 
 

stl的allocator替换为boost内存池后的问题  

2014-07-14 18:28:14|  分类: 定期查阅 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

stl的allocator替换为boost内存池后,问题多多。


        最初我忘记了注册allocator。我参照libuv去实现了一个线程池,使用stl的list。没有使用内存池的情况下,性能是libuv的十分之一。。我以为是自己加锁出了问题,导致锁竞争。


        于是,我去掉了list的插入操作,再测试,性能和libuv的差不多。可见,是list的插入操作相对libuv的queue慢很多的缘故。


        我想,是不是换成内存池的allocator,性能会有所提高?但是换了之后,速度是原先的百分之一。


        由此可见:


        高性能的代码,千万别使用stl+内存池的allocator!


        stl的性能虽然很不错了,但是相对于c实现的libuv的queue,还是有非常大的差距。



补充:仔细想了一下,这个性能差别太大,不合理!原因在于,libuv的queue实现上采用的是宏,相当于stl开启优化release编译,我拿debug的去比较,自然不对。其二,vc的stl,实现内存池的allocator是愚蠢的,,实现过才知道有多蹩脚!大量的临时对象allocator,导致速度很慢。服务器程序,底层功能,还是放弃stl吧。。至于逻辑层的小范围,可以少量使用。

 


By:zhanyonhu

  评论这张
 
阅读(603)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016