1
for(int i=0;i<someDomain.count;i++)
{
   if(someDomain.someValue != Convert.ToInt32(DomainConstants.PaymentPending))
   {
      Dosomething...
    }
}

この場合、カウントが多い場合は、ループが開始する前に「DomainConstants.PaymentPending」の整数を宣言することをお勧めします。そうしないと、パフォーマンスが低下することはありません。カウントが100になることもあります。

4

2 に答える 2

3

定数値を 1 回変換すると、このループのパフォーマンスが向上する可能性があります。

そうは言っても、これがパフォーマンスのボトルネックになる可能性は低いです。アプリケーションのプロファイリングを行い、これが実際の問題であることがわかるまでは、このレベルのマイクロ最適化について必ずしも心配する必要はありません。

代わりに、コードを可能な限り読みやすくすることに重点を置きます。個人的には、この場合、変数を作成する方が読みやすく、保守しやすいと思います。上記を次のように書きます。

// Why is this the wrong type in the first place?
var paymentPending = Convert.ToInt32(DomainConstants.PaymentPending); 

foreach(var domain in someDomains.Where(sd => sd.Value != paymentPending)
{
   // Do something with domain
于 2013-01-31T18:43:03.913 に答える
2

一般に、あなたの懸念は完全に有効であり、あなたの考え方は正しいです。なぜなら、何かを一度計算してから「キャッシュ」することは、プログラムのパフォーマンスを向上させるための有効な手法だからです。ただし、これは通常、ファイルから解析された構造、動的に生成された画像など、計算が大きく複雑なものに適用されます。

単純な数値解析は、簡単に観察できるパフォーマンスのボトルネックを引き起こさないため、少なくともループの繰り返し回数が要求した順序である場合は、ループの外に移動しても観察可能な改善は得られません。

この特定の例では、多かれ少なかれ読みやすさを追求する必要があります。実行時間の要件があるプロジェクトに参加したことがある場合は、パフォーマンスの向上を実現するためのより多くの手法(問題の手法よりもかなり効果的な手法がいくつかあります)と、それぞれを適用する方法をすでに知っている可能性があります。 1。

于 2013-01-31T18:55:35.410 に答える