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;奇妙な変換を行い、設定プロパティがその値を変更する条件を満たすことはほとんどありません。 –

+1

2番目のスニペットは、私の意見では耳障りなことです。同じ文字列を1の代わりに5回同じ方法で分割するのは、私にとってばかげているようです。 – itsme86

答えて

0

2番目の例では、string.Split(、)を呼び出すたびに新しい文字列配列が割り当てられるため、メモリ割り当てが少なくなります。

これがコード内の「ホットスポット」である場合は、string.Splitをまったく呼び出さずに、代わりに正規表現を使用して列挙型を検索することを検討します。