0

J'ai le code ci-dessous. Nous avons eu un argument concernant l'approche qui est la meilleure pour les performances de la mémoire. Cela fera-t-il une différence si nous n'utilisons pas une variable distincte et ne l'utilisons pas? Cela affectera-t-il alors est-ce la solution possible?Meilleures pratiques pour les performances de la mémoire

/// <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; 
     } 
    } 

OU

/// <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; 
     } 
    } 

Merci.

+3

Test, test, test et test. C'est la seule chose que vous obtiendrez une réponse concrète. À part cela, les questions sur les meilleures pratiques sont hors sujet ici. – DavidG

+0

Si vous écrivez du code "typé", il est généralement un peu trop tôt pour se soucier des performances ... Normalement, on s'attendrait à un comportement différent de celui des propriétés - 'x.p = v; AssertTrue (x.p == v) 'pour tout' v' vs code affiché dans la publication qui fait une conversion étrange et satisfait rarement la condition que la propriété de réglage change sa valeur. –

+1

Le deuxième extrait est une évidence à mon avis. Séparer la même corde de la même manière 5 fois au lieu de 1 me semble ridicule. – itsme86

Répondre

0

Le deuxième exemple aura moins d'allocation de mémoire à chaque appel de string.Split (,) allouera un nouveau tableau de chaînes.

S'il s'agit d'un «point chaud» dans votre code, vous pouvez envisager de ne pas appeler string.Split du tout, et utiliser plutôt Regex pour rechercher vos énumérations.