下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Java里多個(gè)Map的性能比較(TreeMap、HashMap、ConcurrentSkipListMap)問題:比較Java原生的 3種Map的效率。1. TreeMap2. HashMap3. ConcurrentSkipListMap結(jié)果:模擬150W以內(nèi)海量數(shù)據(jù)的插入和查找,通過增加和查找兩方面的性能測試,結(jié)果如下:Map類型插入查找(在100W數(shù)據(jù)量中)10W50W100W150W0-1W0-25W0-50WConcurrentSkipListMap62 ms227 ms433 ms689ms7 ms80 ms119 msHashMap 18 ms93 ms217 ms303ms2
2、ms13 ms45 msTreeMap 33 ms228 ms429 ms584 ms4ms34 ms61 ms分析說明圖1- 1常數(shù)和logn函數(shù)效率對比示例圖(橫軸-n數(shù)據(jù)量,縱軸-f(n)時(shí)間)TreeMap基于紅黑樹(一種自平衡二叉查找樹)實(shí)現(xiàn)的,時(shí)間復(fù)雜度平均能達(dá)到O(log n)。HashMap是基于散列表實(shí)現(xiàn)的,時(shí)間復(fù)雜度平均能達(dá)到O(1)。ConcurrentSkipListMap是基于跳表實(shí)現(xiàn)的,時(shí)間復(fù)雜度平均能達(dá)到O(log n)。如圖所示:當(dāng)數(shù)據(jù)量增加時(shí),HashMap會引起散列沖突,解決沖突需要多花費(fèi)一些時(shí)間代價(jià),故在f(n)=1向上浮動。隨著數(shù)據(jù)量的增加,HashMa
3、p的時(shí)間花費(fèi)小且穩(wěn)定,在單線程的環(huán)境下比TreeMap和ConcurrentSkipListMap在插入和查找上有很大的優(yōu)勢。(1) TreeMap與HashMap相比較 HashMap里面存入的鍵值對在取出的時(shí)候是隨機(jī)的,它根據(jù)鍵的HashCode值存儲數(shù)據(jù),根據(jù)鍵可以直接獲取它的值,具有很快的訪問速度。在Map 中插入、刪除和定位元素,HashMap是最好的選擇。 TreeMap取出來的是排序后的鍵值對。插入、刪除需要維護(hù)平衡會犧牲一些效率。但如果要按自然順序或自定義順序遍歷鍵,那么TreeMap會更好。本測試增加和查找功能,HashMap比TreeMap的效率要高。(2) TreeMap
4、與ConcurrentSkipListMap相比較 Skip list(跳表)是一種可以代替平衡樹的數(shù)據(jù)結(jié)構(gòu),默認(rèn)是按照Key值升序的。Skip list讓已排序的數(shù)據(jù)分布在多層鏈表中,以0-1隨機(jī)數(shù)決定一個(gè)數(shù)據(jù)的向上攀升與否,通過“空間來換取時(shí)間”的一個(gè)算法,在每個(gè)節(jié)點(diǎn)中增加了向前的指針,在插入、刪除、查找時(shí)可以忽略一些不可能涉及到的結(jié)點(diǎn),從而提高了效率。從概率上保持?jǐn)?shù)據(jù)結(jié)構(gòu)的平衡比顯示的保持?jǐn)?shù)據(jù)結(jié)構(gòu)平衡要簡單的多。對于大多數(shù)應(yīng)用,用Skip list要比用樹算法相對簡單。由于Skip list比較簡單,實(shí)現(xiàn)起來會比較容易,雖然和平衡樹有著相同的時(shí)間復(fù)雜度(O(logn),但是skip li
5、st的常數(shù)項(xiàng)會相對小很多。Skip list在空間上也比較節(jié)省。一個(gè)節(jié)點(diǎn)平均只需要1.333個(gè)指針(甚至更少)。圖1-2 Skip list結(jié)構(gòu)圖(以7,14,21,32,37,71,85序列為例)Skip list的性質(zhì)(1) 由很多層結(jié)構(gòu)組成,level是通過一定的概率隨機(jī)產(chǎn)生的。(2) 每一層都是一個(gè)有序的鏈表,默認(rèn)是升序,也可以根據(jù)創(chuàng)建映射時(shí)所提供的Comparator進(jìn)行排序,具體取決于使用的構(gòu)造方法。(3) 最底層(Level 1)的鏈表包含所有元素。(4) 如果一個(gè)元素出現(xiàn)在Level i 的鏈表中,則它在Level i 之下的鏈表也都會出現(xiàn)。(5) 每個(gè)節(jié)點(diǎn)包含兩個(gè)指針,一個(gè)指
6、向同一鏈表中的下一個(gè)元素,一個(gè)指向下面一層的元素。 ConcurrentSkipListMap具有Skip list的性質(zhì) ,并且適用于大規(guī)模數(shù)據(jù)的并發(fā)訪問。多個(gè)線程可以安全地并發(fā)執(zhí)行插入、移除、更新和訪問操作。與其他有鎖機(jī)制的數(shù)據(jù)結(jié)構(gòu)在巨大的壓力下相比有優(yōu)勢。 TreeMap插入數(shù)據(jù)時(shí)平衡樹采用嚴(yán)格的旋轉(zhuǎn)(比如平衡二叉樹有左旋右旋)來保證平衡,因此Skip list比較容易實(shí)現(xiàn),而且相比平衡樹有著較高的運(yùn)行效率。本測試的增加功能,ConcurrentSkipListMap和TreeMap效率相差不大。查找功能在50W數(shù)據(jù)量以后,TreeMap更有效率,因?yàn)镃oncurrentSkipListMap自帶鎖機(jī)制,會占用一些效率,但對于多線程并發(fā)的環(huán)境下,ConcurrentSkipListMap的效率會比Treep要好的。本測試查找方法使用Map的get方法,循環(huán)、離散獲取。對于ConcurrentSkipListMap,獲得順序片段,可用subMap()方法,提取50w的子序列只需要1ms,具有巨大優(yōu)勢。 SkipListMap的范圍查詢效率比HashMap和TreeMap效率都要高。(3) SkipList 參考資料 1 /questions/sk
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 氮?dú)獯祾呒夹g(shù)方案
- 《GBT 32690-2016 發(fā)酵法有機(jī)酸良好生產(chǎn)規(guī)范》專題研究報(bào)告
- 《GB-T 19933.4-2014土方機(jī)械 司機(jī)室環(huán)境 第4部分:采暖、換氣和空調(diào)(HVAC)的試驗(yàn)方法和性能》專題研究報(bào)告
- 《AQ-T 4233-2013建設(shè)項(xiàng)目職業(yè)病防護(hù)設(shè)施設(shè)計(jì)專篇編制導(dǎo)則》專題研究報(bào)告
- 《GBT 32556.1-2016 帶端鍵傳動的銑刀桿 第 1 部分:帶莫氏錐柄的銑刀桿尺寸》專題研究報(bào)告
- 2026年內(nèi)蒙古建筑職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性考試題庫及參考答案詳解1套
- 《藥品生物檢定技術(shù)》創(chuàng)新課件-中藥養(yǎng)生手串創(chuàng)意方案
- 珠寶行業(yè)珠寶鑲嵌工藝總監(jiān)崗位招聘考試試卷及答案
- 2026年醫(yī)院醫(yī)技科工作計(jì)劃(3篇)
- 《患者身份識別管理標(biāo)準(zhǔn)》測試題及答案
- 2025年大學(xué)康復(fù)治療學(xué)(運(yùn)動療法學(xué))試題及答案
- 胎膜早破的診斷與處理指南
- 進(jìn)出口貨物報(bào)關(guān)單的填制教案
- 被壓迫者的教育學(xué)
- 2025年科研倫理與學(xué)術(shù)規(guī)范期末考試試題及參考答案
- 上市公司財(cái)務(wù)舞弊問題研究-以國美通訊為例
- 2025年國家開放電大行管本科《公共政策概論》期末考試試題及答案
- 2024年廣東省春季高考(學(xué)考)語文真題(試題+解析)
- 四川省教育考試院2025年公開招聘編外聘用人員筆試考試參考試題及答案解析
- 超市商品陳列學(xué)習(xí)培訓(xùn)
- 2025年中級煤礦綜采安裝拆除作業(yè)人員《理論知識》考試真題(含解析)
評論
0/150
提交評論