Posted on 2008-09-08 10:05
dennis 閱讀(5848)
評論(5) 編輯 收藏 所屬分類:
java 、
my 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