2017-06-08 111 views
0

我有以下代碼。我們曾經爭論過哪種方法更適合於內存性能。如果我們不使用單獨的變量並使用它,它會有所作爲嗎?它會影響到那麼這是可能的解決方案?內存性能的最佳實踐

/// <summary> 
    /// Treatment Point Types 
    /// </summary> 
    public string DWTreatment 
    { 
     get 
     { 
      StringBuilder sbStatus = new StringBuilder(); 
      ......... 

     } 

     set 
     { 
      chkTreatSR.Checked = value.Split(',').Contains(((int)AgencyListReportTemplate.SamplingPointTypesEnum.SR).ToString()); 
      chkTreatIT.Checked = value.Split(',').Contains(((int)AgencyListReportTemplate.SamplingPointTypesEnum.IT).ToString()); 
      chkTreatEP.Checked = value.Split(',').Contains(((int)AgencyListReportTemplate.SamplingPointTypesEnum.EP).ToString()); 
      chkTreatWW.Checked = value.Split(',').Contains(((int)AgencyListReportTemplate.SamplingPointTypesEnum.WW).ToString()); 
      chkTreatQC.Checked = value.Split(',').Contains(((int)AgencyListReportTemplate.SamplingPointTypesEnum.QC).ToString()); 

      isSelectionSetByPage = true; 
     } 
    } 

OR

/// <summary> 
    /// Treatment Point Types 
    /// </summary> 
    public string DWTreatment 
    { 
     get 
     { 
      StringBuilder sbStatus = new StringBuilder(); 
      ......... 

     } 

     set 
     { 
      var values = value.Split(','); 
      chkTreatSR.Checked = values.Contains(((int)AgencyListReportTemplate.SamplingPointTypesEnum.SR).ToString()); 
      chkTreatIT.Checked = values.Contains(((int)AgencyListReportTemplate.SamplingPointTypesEnum.IT).ToString()); 
      chkTreatEP.Checked = values.Contains(((int)AgencyListReportTemplate.SamplingPointTypesEnum.EP).ToString()); 
      chkTreatWW.Checked = values.Contains(((int)AgencyListReportTemplate.SamplingPointTypesEnum.WW).ToString()); 
      chkTreatQC.Checked = values.Contains(((int)AgencyListReportTemplate.SamplingPointTypesEnum.QC).ToString()); 

      isSelectionSetByPage = true; 
     } 
    } 

感謝。

+3

測試,測試,基準測試。這是唯一的你會得到一個具體的答案。除此之外,最佳實踐問題在這裏脫離主題。 – DavidG

+0

如果你編寫「字符串類型」的代碼,一般來說,擔心性能通常有點太早了...通常,人們會期望不同的屬性 - 'x.p = v; AssertTrue(x.p == v)'表示所有'v'與代碼中顯示的代碼之間存在一些奇怪的轉換,很少滿足設置屬性更改其值的條件。 –

+1

在我看來,第二個片段是一個不容忽視的內容。以同樣的方式分割相同的字符串5次而不是1次對我來說似乎很荒謬。 – itsme86

回答

0

第二個例子的內存分配會更少,因爲每次調用string.Split(,)都會分配一個新的字符串數組。

如果這是您的代碼中的「熱點」,您可能會考慮不調用string.Split,而是使用Regex來搜索您的枚舉。