莊周夢蝶

          生活、程序、未來
             :: 首頁 ::  ::  :: 聚合  :: 管理

          阻塞隊列的性能對比

          Posted on 2008-09-08 10:05 dennis 閱讀(5849) 評論(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可以同時執行那么多線程,從而造成線程切換時間的開銷遠大于本身隊列的性能
          主站蜘蛛池模板: 舞阳县| 尼木县| 岑溪市| 恩施市| 灵武市| 府谷县| 辽中县| 靖安县| 清新县| 治多县| 前郭尔| 甘孜县| 岑巩县| 禹城市| 浑源县| 肇庆市| 陆河县| 金寨县| 墨竹工卡县| 安平县| 松潘县| 寻甸| 和静县| 田东县| 苏尼特左旗| 尼勒克县| 平和县| 临潭县| 建平县| 东阳市| 闽侯县| 赤壁市| 高邑县| 保定市| 永年县| 绥德县| 龙山县| 常山县| 股票| 五峰| 蓬安县|