2
var usedIds = list.Count > 20 ? new HashSet<int>() as ICollection<int> : new List<int>();

List は 20 個以下のアイテムでパフォーマンスが向上し、HashSet はアイテムの数が多いほどパフォーマンスが向上すると仮定すると (この投稿から)、予測可能なアイテム数に基づいて異なるコレクション タイプを動的に使用するのは効率的な方法ですか?

各コレクション タイプのアクションはすべて同じです。

PS: また、同じことを自動的に行うと思われるHybridCollectionクラスを見つけましたが、使用したことがないため、そのパフォーマンスに関する情報もありません。

編集:私のコレクションは、多くの挿入と取得を伴うバッファーとして主に使用されます。

4

6 に答える 6

1

コレクションが非常に小さい場合、パフォーマンスは事実上常に問題になりません。n が常に 20 未満であることがわかっている場合、O(n) は定義上、O(1) です。 小さな n ではすべてが高速です。

データを概念的にどのように扱うか、実行する必要がある操作のタイプ、および最も効率的な操作のタイプを最も適切に表すデータ構造を使用してください。

于 2013-11-07T20:57:08.220 に答える
-2

HashSet の方が優れています。おそらく使用するスペースが少なくなり、要素へのアクセスが速くなるためです。

于 2013-11-07T20:57:17.360 に答える