我目前正在寻找Scala中的收集类型,它是按索引查询最快的 - 这意味着,如果x
是我的收藏品,我希望它能够以最快的速度搜索{ {1}}用于任何索引x(i)
。此外,i
无法在运行时更改。
查看Scala Collections Performance Characteristics,似乎O(1)的最佳性能由Java x
,Array
和mutable.ArrayBuffer
给出({{1} }和mutable.ArraySeq
在我的情况下没用。)这是令人惊讶的,因为我期望不可变集合更快,因为它们支持更少的功能。不可变集合的最佳性能由String
给出,其中O(~1),据我所知,它与O(1)一样好。
我在这里遗漏了什么,或者可变藏品真的有更好的搜索性能吗?
答案 0 :(得分:4)
Scala没有不可变数组,数组是最佳随机索引访问的结构。如果有一个不可变数组,它将具有与可变版本相同的性能。
它不是关于可变的和不可变的,而是关于所使用的数据结构。