2012-03-15 1 views
-1

int n = myArray.Length = myList.Countn = myArray.Lengthまたは= myList.Countの場合は、使用するとよいでしょうか?

次に、この値を使用して配列/リストの長さを表す必要がある場合、どちらを使用するのが最適でしょうか?例: 我々は使用するvar x=n*2 or var x=myArray.Length*2 or var x=myList.Count*2

同等の質問は、オブジェクトのメンバープロパティを参照する代わりにnを直接使用する方が効率的でしょうか?

答えて

6

我々はそれが潜在的に、より効率的だからローカルn == myList.Countは私がmyList.Countnを使用する必要があることがわかっている場合は、以下の

を求めているようですね?

一般的に、ローカル検索はメンバーアクセスよりも効率的です。しかし、その差はごくわずかであり、プログラムを書くときには私が心配していないことがあります。

代わりに可能な最も読みやすいコードを書くことに焦点を合わせます。ほとんど確実に問題ではないので、このようなマイクロ最適化には心配しないでください。 I/O、またはフィールドとローカルタイムのアクセスの違いよりもデータ構造の選択において、あなたのプログラムのボトルネックを見つける可能性は非常に高いです。

+0

私はn対list.Countの場合、ローカルルックアップとメンバーアクセスの違いは簡単なことに同意します。しかし、他のより複雑なオブジェクトに対しても、同じことが当てはまらないかもしれません。特に、内部的にどのように動作するのかわからない場合です。 –

+1

@DanIveson私の議論では、プロパティの参照がフィールドアクセスと大きく異なるほど高価な場合は、プロパティではありません。どちらの場合でも、この最適化を時期尚早に行うべきではありません。読みやすいコードに焦点を当てて、プロファイラがあなたが逃したものを教えさせましょう。 – JaredPar

1

変数を使用して配列の長さを格納する場合は、「n」よりも適切な名前を使用していることを確認してください。たとえば、あなたが使用したいことがあります。

int arrayLength = myArray.Length; 

はしかし、私はそれが参照しています正確に何を知っているので、私のアプリケーション全体でmyArray.Lengthを使用することを好みます。しかし、今日の終わりには、これは単に個人的な好みだと思います。

関連する問題