scala 集合類庫API性能對比大全

轉載:不允許轉載請告知,在第一時間刪除觉至。

scala 集合類庫使用率非常頻繁璧尸,也是其它語言開發(fā)者羨慕不已功能咒林。本篇講說明類庫中相同的API的執(zhí)行效率對比,作為使用時的參考依據(jù)爷光。只是理論上的特點垫竞,沒有具體指標量化。

原文傳送門 Author: heathermiller

為閱讀方便蛀序,對內(nèi)容稍作調整欢瞪。

不同的容器類型具有不同的性能特點。這通常是選擇容器類型的首要依據(jù)哼拔。以下的兩張表格引有,總結了一些關于容器類型常用操作的性能特點瓣颅。

標志位解釋

為便于理解倦逐,先對各標志位做說明:

術語 操作功能描述
C 指操作的時間復雜度為常數(shù)
eC 指操作的時間復雜度實際上為常數(shù),但可能依賴于諸如一個向量最大長度或是哈希鍵的分布情況等一些假設宫补。
aC 該操作的均攤運行時間為常數(shù)檬姥。某些調用的可能耗時較長,但多次調用之下粉怕,每次調用的平均耗時是常數(shù)健民。
Log 操作的耗時與容器大小的對數(shù)成正比。
L 操作是線性的贫贝,耗時與容器的大小成正比秉犹。
- 操作不被支持蛉谜。

序列類型的性能特點

根據(jù)需求選擇序列,會大幅提升性能崇堵。具體的性能評估如下:

不可變序列性能特點

不可變序列 head tail apply update prepend append insert
List C C L L C L -
Stream C C L L C L -
Vector eC eC eC eC eC eC -
Stack C C L L C L L
Queue aC aC L L C C -
Range C C C - - - -
String C L C L L L -

可變序列性能特點

可變序列 head tail apply update prepend append insert
ArrayBuffer C L C C L aC L
ListBuffer C L L L C C L
StringBuilder C L C C L aC L
MutableList C L L L C C L
Queue C L L L C C L
ArraySeq C L C C - - -
Stack C L L L C L L
ArrayStack C L C C aC L L
Array C L C C - - -

序列中操作的功能描述

  • head: 選擇序列的第一個元素
  • tail : 生成一個包含除第一個元素以外所有其他元素的新的列表型诚。
  • apply : 索引
  • update: 功能性更新不可變序列,同步更新可變序列鸳劳。
  • prepend: 添加一個元素到序列頭狰贯。對于不可變序列,操作會生成個新的序列赏廓。對于可變序列涵紊,操作會修改原有的序列。
  • append: 在序列尾部插入一個元素幔摸。對于不可變序列摸柄,這將產(chǎn)生一個新的序列。對于可變序列抚太,這將修改原有的序列塘幅。
  • insert : 在序列的任意位置上插入一個元素。只有可變序列支持該操作尿贫。

集合和映射類型的性能特點

不可變序列性能

不可變序列 lookup add remove min
HashSet/HashMap eC eC eC L
TreeSet/TreeMap Log Log Log Log
BitSet C L L eC1
ListMap L L L L

可變序列性能

可變序列 lookup add remove min
HashSet/HashMap eC eC eC L
WeakHashMap eC eC eC L
BitSet C aC C eC1
TreeSet Log Log Log Log

可變和不可變集與映射功能描述

  • lookup 測試一個元素是否被包含在集合中电媳,或者找出一個鍵對應的值
  • add 添加一個新的元素到一個集合中或者添加一個鍵值對到一個映射中
  • remove 移除一個集合中的一個元素或者移除一個映射中一個鍵。
  • min 集合中的最小元素庆亡,或者映射中的最小鍵匾乓。

據(jù)說,點贊年終獎會Double又谋。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拼缝,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子彰亥,更是在濱河造成了極大的恐慌咧七,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件任斋,死亡現(xiàn)場離奇詭異继阻,居然都是意外死亡,警方通過查閱死者的電腦和手機废酷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進店門瘟檩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人澈蟆,你說我怎么就攤上這事墨辛。” “怎么了趴俘?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵睹簇,是天一觀的道長奏赘。 經(jīng)常有香客問我,道長太惠,這世上最難降的妖魔是什么志珍? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮垛叨,結果婚禮上伦糯,老公的妹妹穿的比我還像新娘。我一直安慰自己嗽元,他們只是感情好敛纲,可當我...
    茶點故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著剂癌,像睡著了一般淤翔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上佩谷,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天旁壮,我揣著相機與錄音,去河邊找鬼谐檀。 笑死抡谐,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的桐猬。 我是一名探鬼主播麦撵,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼溃肪!你這毒婦竟也來了免胃?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤惫撰,失蹤者是張志新(化名)和其女友劉穎羔沙,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體厨钻,經(jīng)...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡扼雏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了莉撇。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片呢蛤。...
    茶點故事閱讀 40,872評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡惶傻,死狀恐怖棍郎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情银室,我是刑警寧澤涂佃,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布励翼,位于F島的核電站,受9級特大地震影響辜荠,放射性物質發(fā)生泄漏汽抚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一伯病、第九天 我趴在偏房一處隱蔽的房頂上張望造烁。 院中可真熱鬧,春花似錦午笛、人聲如沸惭蟋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽告组。三九已至,卻和暖如春癌佩,著一層夾襖步出監(jiān)牢的瞬間木缝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工围辙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留我碟,地道東北人。 一個月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓姚建,卻偏偏與公主長得像怎囚,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子桥胞,可洞房花燭夜當晚...
    茶點故事閱讀 45,876評論 2 361

推薦閱讀更多精彩內(nèi)容

  • Java集合類可用于存儲數(shù)量不等的對象,并可以實現(xiàn)常用的數(shù)據(jù)結構如棧,隊列等,Java集合還可以用于保存具有映射關...
    小徐andorid閱讀 1,946評論 0 13
  • 四恳守、集合框架 1:String類:字符串(重點) (1)多個字符組成的一個序列,叫字符串贩虾。生活中很多數(shù)據(jù)的描述都采...
    佘大將軍閱讀 764評論 0 2
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,113評論 1 32
  • 在一個方法內(nèi)部定義的變量都存儲在棧中催烘,當這個函數(shù)運行結束后,其對應的棧就會被回收缎罢,此時伊群,在其方法體中定義的變量將不...
    Y了個J閱讀 4,420評論 1 14
  • 拉桿箱設計靈感再現(xiàn)廣交會的啟示 Todywu2016-4-19 這次廣交會電子產(chǎn)品展上,出現(xiàn)了箱包手袋行業(yè)的新...
    todywu閱讀 1,053評論 2 50