2017-01-06 2 views
1

私は現在スカラーでインデックスで検索するのが最も速くなるコレクションタイプを探しています - つまり、xが自分のコレクションであれば、インデックスiを検索するのに、できるだけ速いパフォーマンスが必要です。また、実行時にxを変更することはできません。 Scala Collections Performance Characteristicsで探しScala:変更可能なコレクションのインデックス作成は不変より速いですか?

、Oの最高のパフォーマンスを(1)JavaのArraymutable.ArrayBuffermutable.ArraySeqStringRangeは、私の場合には有用ではないとして)によって与えられているようです。これは驚くべきことです。不変なコレクションがより少ない機能をサポートするため、より高速になると期待していたからです。不変のコレクションによる最高のパフォーマンスは、VectorとO(〜1)で与えられます。これは、私が理解する限り、O(1)と同じくらい良いです。

私はここで何かが見つからないのですか、または変更可能なコレクションが本当に良い検索パフォーマンスを持っていますか?

答えて

4

Scalaには不変の配列はなく、配列は可能な限り最良のランダムインデックスアクセスを持つ構造体です。変更不可能な配列があった場合は、変更可能なバージョンと同じパフォーマンスを持ちます。

これは、変更可能なものと不変なものではなく、使用されるデータ構造に関するものです。

+1

Scala 2.13には、不変の配列ラッパー、https://github.com/scala/collection-strawman/pull/6があります。 –

関連する問題