2013-08-03 47 views
0
private bool _invalidated 
public void Invalidate() 
{ 
    _invalidated = true; 
} 

這些簡單示例中的性能更好?

public void Invalidate() 
{ 
    if(!_invalidated) 
    { 
     _invalidated = true; 
    } 
} 

這將是更快?

這將被稱爲很多次。

+0

它多久會被調用? – AmazingDreams

+12

這種不成熟的優化方式。 – Matt

+1

只需製作一個基準並嘗試一下。這是確保的唯一方法。 (我的猜測都是一樣的,但我可能是錯的)。無論結果如何,「_invalidated = false」更容易閱讀,差異必須忽略不計...... – Falanwe

回答

1

第一個是較少的指令,不包含條件,因此它是可取的。然而,第二個可能會被一個足夠聰明的編譯器/ JITer優化掉。

0

正如Andreas所說,這取決於。正如I4V所說的那樣,換言之,這並不重要。

我會爲第一個,少代碼和漂亮(當然是主觀的)。