莊周夢(mèng)蝶

          生活、程序、未來(lái)
             :: 首頁(yè) ::  ::  :: 聚合  :: 管理

          阻塞隊(duì)列的性能對(duì)比

          Posted on 2008-09-08 10:05 dennis 閱讀(5850) 評(píng)論(5)  編輯  收藏 所屬分類: java 、my open-source

          主要是比較offer跟poll兩個(gè)方法的性能,開N個(gè)線程,每個(gè)線程往隊(duì)列里寫或者取500個(gè)整數(shù)。

          線程數(shù)
          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

          逗號(hào)前的數(shù)字是offer測(cè)試花費(fèi)的時(shí)間,逗號(hào)后的數(shù)字是poll測(cè)試花費(fèi)的時(shí)間,單位毫秒。
          結(jié)論:
          1、ArrayBlockingQueue性能優(yōu)于LinkedBlockingQueue,但是LinkedBlockingQueue是無(wú)界的。
          2、ArrayBlockingQueue和LinkedBlockingQueue的poll方法總是比offer方法快,并發(fā)越高,差距越大
          3、ArrayBlockingQueue和LinkedBlockingQueue的性能遠(yuǎn)高于PriorityBlockingQueue,顯然優(yōu)先隊(duì)列在比較優(yōu)先級(jí)上的操作上耗費(fèi)太多
          4、PriorityBlockingQueue的offer方法與poll方法的性能差距很小,基本維持在近似1:1

          評(píng)論

          # re: 阻塞隊(duì)列的性能對(duì)比  回復(fù)  更多評(píng)論   

          2008-09-08 11:39 by advincenting
          單位應(yīng)該是MS?

          # re: 阻塞隊(duì)列的性能對(duì)比  回復(fù)  更多評(píng)論   

          2008-09-08 11:48 by dennis
          @advincenting
          是的,補(bǔ)充下

          # re: 阻塞隊(duì)列的性能對(duì)比  回復(fù)  更多評(píng)論   

          2008-11-18 17:23 by wangzm
          你們誰(shuí)抄襲誰(shuí)的啊?
          http://dennis-zane.javaeye.com/blog/238431

          # re: 阻塞隊(duì)列的性能對(duì)比  回復(fù)  更多評(píng)論   

          2008-11-18 17:59 by dennis
          @wangzm
          你沒(méi)看見(jiàn)dennis?那是我在javaeye的blog

          # re: 阻塞隊(duì)列的性能對(duì)比  回復(fù)  更多評(píng)論   

          2012-01-06 15:33 by 測(cè)試
          測(cè)試意義不大,應(yīng)該比較1讀1寫 ,而后再測(cè)試多讀多寫, 如果超過(guò)8讀8寫意義就更加不大了,估計(jì)你的機(jī)器是不會(huì)配備如此多的cpu可以同時(shí)執(zhí)行那么多線程,從而造成線程切換時(shí)間的開銷遠(yuǎn)大于本身隊(duì)列的性能
          主站蜘蛛池模板: 雅江县| 镇沅| 铜山县| 凌云县| 武平县| 米泉市| 阿荣旗| 双牌县| 威信县| 巴中市| 迁西县| 湾仔区| 华坪县| 商城县| 汶上县| 寻乌县| 富锦市| 东台市| 阜康市| 渝中区| 清丰县| 沙田区| 普宁市| 蚌埠市| 北辰区| 丹巴县| 藁城市| 连城县| 吴桥县| 萍乡市| 华宁县| 宁夏| 渑池县| 清水县| 昆山市| 旌德县| 屏南县| 武穴市| 当阳市| 遂平县| 莱阳市|