随笔-370  评论-469  文章-7  trackbacks-0

主要是比较offer跟poll两个方法的性能,开N个线程,每个线程往队列里写或者取500个整数。

线程数
20
50
100
200
500 1000
LinkedBlockingQueue     
15,0
31,15
32,16
63,32
203,47
563,110
ArrayBlockingQueue 15,0
16,15
31,15
47,16
125,47
364,68
PriorityBlockingQueue 78,78
172,188
360,422
813,969
3094,2641
6547,5453

逗号前的数字是offer测试花费的时间,逗号后的数字是poll测试花费的时间,单位毫秒。
结论:
1、ArrayBlockingQueue性能优于LinkedBlockingQueue,但是LinkedBlockingQueue是无界的。
2、ArrayBlockingQueue和LinkedBlockingQueue的poll方法总是比offer方法快,并发越高,差距越大
3、ArrayBlockingQueue和LinkedBlockingQueue的性能远高于PriorityBlockingQueue,显然优先队列在比较优先级上的操作上耗费太多
4、PriorityBlockingQueue的offer方法与poll方法的性能差距很小,基本维持在近似1:1
posted on 2008-09-08 10:05 dennis 阅读(1958) 评论(4)  编辑  收藏 所属分类: javamy open-source

评论:
# re: 阻塞队列的性能对比 2008-09-08 11:39 | advincenting
单位应该是MS?  回复  更多评论
  
# re: 阻塞队列的性能对比 2008-09-08 11:48 | dennis
@advincenting
是的,补充下  回复  更多评论
  
# re: 阻塞队列的性能对比 2008-11-18 17:23 | wangzm
你们谁抄袭谁的啊?
http://dennis-zane.javaeye.com/blog/238431  回复  更多评论
  
# re: 阻塞队列的性能对比 2008-11-18 17:59 | dennis
@wangzm
你没看见dennis?那是我在javaeye的blog  回复  更多评论
  

标题  
姓名  
主页
验证码 *  
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-09-08 11:48 编辑过