私はGoogle Guavaライブラリを調べて、そこに多くの優れた使用可能なデータ構造を見つけました。
他の誰かがそれを使用した場合、巨大なデータ セットで使用したときのパフォーマンスについてフィードバックを提供できますか? 基本的には、その操作の BigO 表記を探しています。
前もって感謝します
私はGoogle Guavaライブラリを調べて、そこに多くの優れた使用可能なデータ構造を見つけました。
他の誰かがそれを使用した場合、巨大なデータ セットで使用したときのパフォーマンスについてフィードバックを提供できますか? 基本的には、その操作の BigO 表記を探しています。
前もって感謝します
グアバの寄稿者はこちら。
ええと、何を言いたいのですか?すべてのハッシュ ベース (および列挙型ベース) のコレクションには、予想どおり、一定時間内に単一エントリの操作があります。( HashMultiset
、LinkedHashMultiset
、ConcurrentHashMultiset
、HashBiMap
、HashBasedTable
、ImmutableSet
、などImmutableMap
はすべてそのカテゴリに分類されます。) 、EnumMultiset
、およびを含むすべてのツリーベース/ソートされたコレクションには、単一エントリ操作の対数時間が含まれます。EnumBiMap
TreeMultiset
ImmutableSortedMap
ImmutableSortedSet
マルチマップの中でも、ドキュメントは基本的にMap
と 値コレクションの実装を示しており、そこから理解することができます。 HashMultimap
基本的には、aHashMap
からHashSet
s 、 LinkedHashMultimap
aLinkedHashMap
からLinkedHashSet
s、ArrayListMultimap
aHashMap
からArrayList
s、LinkedListMultimap
aLinkedHashMap
からLinkedList
s (技術的に真実ではないにしても、パフォーマンスに関して)、TreeMultimap
aTreeMap
からTreeSet
s、ImmutableSetMultimap
is anImmutableMap
からImmutableSet
s、ImmutableListMultimap
is anImmutableMap
からImmutableList
s です。
自明ではないかもしれない唯一のことは、おそらく、SortedMultiset
実装が時間内にsubMultiset().size()
操作を提供することです。O(log n)
これは、JDK だけでは実行できませんでしたTreeMap<E, Integer>
。
コレクションのすべてのビュー (私たちはビューが大好きです) は一定の時間で返され、期待どおりの漸近線が得られます。
もっと具体的に気になったことはありますか?
(一般に、Guava は基本的に Google が本番環境で使用するコア ライブラリです。これは、ユーティリティが負荷の高い環境で満足のいくパフォーマンスを発揮することのかなり強力な証拠だと思います。さらに、Guava は常に改善されており、それらの改善が得られます。基本的に無料です。)