2016-06-25 5 views
0

最適化の目標はどのように改善されますか?セットアクセッサのC#チェック値

public SpeedGraphModel SpeedGraphModel 
{ 
    get { return _speedGraphModel; } 
    set { 
      if (_speedGraphModel == value) 
       return; 

      _speedGraphModel = value; 
     } 
} 

または

public SpeedGraphModel SpeedGraphModel 
{ 
    get { return _speedGraphModel; } 
    set { _speedGraphModel = value; } 
} 

私はstringタイプはチェックせずに良くなるためだと思うが、他のタイプのために?

+4

これは実際に違いが出ていると思いますか? – Steve

+5

あなたは[時期尚早最適化](http://c2.com/cgi/wiki?PrematureOptimization)の被害者ではないと確信していますか? – rene

+0

なぜこのようなコードが必要でしょうか?これは可読性を損なう。あなたは 'public SpeedGraphModel SpeedGraphModel {get;セット; } '。現代のハードウェアと性能の差を生む可能性は非常に低いです。 – QuantumHive

答えて

0

変数の値を設定する代わりに、同じ値であっても条件チェックを追加することは冗長です。

最高の場合等しい場合は、1つの操作(条件)を行います。
最悪の場合は2つの操作(条件+割り当て)を行います。

変数の代わりに、を設定します。 => 1回の操作。

0

このようなチェックは、通常、設定値でロジックを呼び出すときに使用されます(設定するだけでなく)。たとえば、デスクトップ(WPF/WinForms)やモバイル(Xamarin)では、独自のプロパティを実装できます。その動作は依存関係プロパティと似ており、内部にOnPropertyChanged()メソッドが呼び出されます。更新後にビューのアイテムをリフレッシュするために使用できます。このように、アイテムに同じ値を設定してからOnPropertyChanged()を呼び出しても、パフォーマンスに影響を与える可能性のあるビューの一部が更新されるため、ここでもう一度確認してください。

通常のプロパティがある場合は、プライベートフィールド内の値を設定するだけで、後でロジックを追加する必要はありません。追加のチェックは不要なので、パフォーマンスが向上することはありません。