阻塞隊列的性能對比
主要是比較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