Scala:可变集合索引比不可变更快吗?

时间:2017-01-06 13:40:27

标签: performance scala

我目前正在寻找Scala中的收集类型,它是按索引查询最快的 - 这意味着,如果x是我的收藏品,我希望它能够以最快的速度搜索{ {1}}用于任何索引x(i)。此外,i无法在运行时更改。

查看Scala Collections Performance Characteristics,似乎O(1)的最佳性能由Java xArraymutable.ArrayBuffer给出({{1} }和mutable.ArraySeq在我的情况下没用。)这是令人惊讶的,因为我期望不可变集合更快,因为它们支持更少的功能。不可变集合的最佳性能由String给出,其中O(~1),据我所知,它与O(1)一样好。

我在这里遗漏了什么,或者可变藏品真的有更好的搜索性能吗?

1 个答案:

答案 0 :(得分:4)

Scala没有不可变数组,数组是最佳随机索引访问的结构。如果有一个不可变数组,它将具有与可变版本相同的性能。

它不是关于可变的和不可变的,而是关于所使用的数据结构。