私は現在、オブジェクトを保持するためList<T>
のキューとしてを使用しています(lst[0]
thenを使用)。lst.removeAt(0)
一度に最大約20個のアイテムがあります。実際のQueue<T>
授業があることに気づきました。キューのように振る舞うQueue<T>
オーバーを使用することに何か利点(パフォーマンス、メモリなど)があるかどうか疑問に思っていますか?List<T>
56030 次
4 に答える
77
パフォーマンスのプロファイルを作成できます。この場合、アイテムが非常に少ない場合でも、実際に価値のある違いを得るには、コードを何百万回も実行する必要があります。
私はこれを言います:Queue<T>
あなたの意図をより明確に明らかにします、人々はキューがどのように機能するかを知っています。
RemoveAt(magicNumber)
キューのように使用されているリストは、特に不必要なインデックス作成とコードがたくさんある場合は、それほど明確ではありません。Dequeue
コード保守の観点からは、はるかに消耗品です。
これで測定可能なパフォーマンスの問題が発生する場合は、それに対処できます。潜在的なパフォーマンスの問題すべてに事前に対処しないでください。
于 2012-04-30T08:37:32.427 に答える
15
Queue<T>
クラスがキューを実装し、クラスがリストを実装するという事実に加えてList<T>
、パフォーマンスの違いがあります。
List<T>
キュー内のすべての要素から最初の要素を削除するたびに、コピーされます。キューに20個の要素しかない場合は、目立たない可能性があります。ただし、次の要素をデキューするQueue<T>
と、そのようなコピーは発生せず、常に高速になります。キューが長い場合、違いが大きくなる可能性があります。
于 2012-04-30T08:46:47.770 に答える