莊周夢蝶

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

          阻塞隊列的性能對比

          Posted on 2008-09-08 10:05 dennis 閱讀(5850) 評論(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可以同時執行那么多線程,從而造成線程切換時間的開銷遠大于本身隊列的性能
          主站蜘蛛池模板: 隆尧县| 浦江县| 茂名市| 金沙县| 五常市| 神农架林区| 宝丰县| 拉孜县| 朝阳市| 通州市| 和林格尔县| 盐源县| 兴仁县| 堆龙德庆县| 玉溪市| 梁山县| 霸州市| 道孚县| 井冈山市| 永修县| 泾川县| 铜鼓县| 治多县| 会昌县| 尖扎县| 大安市| 钟祥市| 仁寿县| 定州市| 伊金霍洛旗| 若尔盖县| 承德县| 寿宁县| 内黄县| 济南市| 博兴县| 迁西县| 宜良县| 苍梧县| 许昌市| 平湖市|