庄周梦蝶

生活、程序、未来
   :: 首页 ::  ::  :: 聚合  :: 管理

阻塞队列的性能对比

Posted on 2008-09-08 10:05 dennis 阅读(5837) 评论(5)  编辑  收藏 所属分类: javamy open-source

主要是比较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

评论

# re: 阻塞队列的性能对比  回复  更多评论   

2008-09-08 11:39 by advincenting
单位应该是MS?

# re: 阻塞队列的性能对比  回复  更多评论   

2008-09-08 11:48 by dennis
@advincenting
是的,补充下

# re: 阻塞队列的性能对比  回复  更多评论   

2008-11-18 17:23 by wangzm
你们谁抄袭谁的啊?
http://dennis-zane.javaeye.com/blog/238431

# re: 阻塞队列的性能对比  回复  更多评论   

2008-11-18 17:59 by dennis
@wangzm
你没看见dennis?那是我在javaeye的blog

# re: 阻塞队列的性能对比  回复  更多评论   

2012-01-06 15:33 by 测试
测试意义不大,应该比较1读1写 ,而后再测试多读多写, 如果超过8读8写意义就更加不大了,估计你的机器是不会配备如此多的cpu可以同时执行那么多线程,从而造成线程切换时间的开销远大于本身队列的性能

只有注册用户登录后才能发表评论。


网站导航: