5

Java では、コレクションの使用法に従って、同じ実装を使用しません (つまり、ArrayList と LinkedList など)。

Java のバックグラウンドを持っているので、Scala コレクションとパフォーマンスに関する考慮事項について知っておくべきことを誰か教えてもらえますか?

Scala List の不変バージョンは、ある種の不変 LinkedList のようです。Coursera の Martin Odersky コースに従って、概念を理解しています。同じように、特に不変リストがある場合は、追加するよりも前に追加する方が効率的である理由を理解しています。

Scala コレクションのパフォーマンスに関するこれらの種類のトリッキーな事柄のすべて (またはほとんど) を知りたいので、自分自身が難しい方法だとは思わないでください。誰かが私を助けることができますか?

ありがとう

4

2 に答える 2

8

コレクションのパフォーマンス特性を説明するドキュメントがあります。それを超えて、あなたは本当にマイクロベンチマークであなたのユースケースをテストするべきです。場合によっては、ScalaコレクションのパフォーマンスはJavaコレクションに非常に近いものです。他にはギャップがあります(例:マップ)。他にはJavaアナログがなく、不変と可変の比較は、コレクションの使用方法に大きく依存します(明らかに、可変コレクションを優先する大量のミューテーションと、不変コレクションを優先する大量の再利用/コピー)。

于 2012-10-20T01:05:35.293 に答える
1

これはあなたの質問に具体的に答えるものではありませんが、一般的な使用では、Java コレクションと scala コレクションの違いに気付かないと思います。少なくとも私はそれに気づきません:) 一般に、人々はこれらの種類のことを心配して時期尚早に最適化すると思います(最適化が必要な完全に有効なユースケースがあるかもしれませんが)。

個人的には、API の点で Java コレクションよりも Scala コレクションを使用することを好みます。また、パフォーマンスの問題を経験したことがないため、Java と Scala のベンチマークを実際に調べたことはありません。

ただし、Rex が言うように、心配している場合 (または単に疑問に思っている場合) は、特定のユース ケースでベンチマークを設定すると便利です。

于 2012-10-20T01:57:37.303 に答える