2016-07-22 8 views
2

私は通常、このようなものを使用します。割り当て前に値を確認する価値はありますか?

if(!variable.Equals(value)) 
{ 
    variable = value; 
} 

を私はこれを行うために学習されたが、それは価値がある場合、私はちょうど疑問に思って。比較対代価とは何ですか?私はそれがないと思うが、C#何とか変数に同じデータの割り当ての操作のために最適化されていますか?

おかげ

+0

私は割り当てがより速いと推測します – Candide

+0

@KaeLこれはINotifyPropertyChangedの非常に一般的な実装のために不必要なイベントを発生させたくないため、この質問は少し異なります – Qerts

答えて

2

比較演算は、CPUのために困難であると代入演算よりも少し時間がかかります。

variablevalueに等しくない場合は、比較と割り当ての2つの操作を実行する時間が長くなります。

ので、比較なしの割り当てはvariablevalueに等しい場合でも、より速く実行されます。

variable = value; 
-1

varibleの値がarleady valueですし、超高速かつ最適化されたコードを持つようにしたい場合にのみ価値があることですることができます。しかし、私の意見では、利益は となります。 variable = value;を使用してください。正常に動作し、コードがより明確になります。

1

割り当て操作自体は非常に安価(高速)です。変数の逆参照は高価な場合があります。たとえば、product[a.f() + 3].age = 2;は、目的の位置に到達するために多くの計算を行います。ageあなたのケースでは、あなたのif状態で同じ逆参照を行います。したがって、割り当てる前にテストすることに全く利点はありません。比較は「減算」と「チェックゼロフラグ」を意味します)、変数の値をメモリから読み込むことを意味します。割り当てとは、メモリに値を書き込むことです。メモリに読み書きすることは同等です。

関連する問題