Лучшие практики для производительности памяти

У меня есть код ниже. У нас был аргумент относительно того, какой подход лучше для производительности памяти. Будет ли это иметь какое-то значение, если мы не будем использовать отдельную переменную? Это повлияет на это, возможно ли это решение?

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

ИЛИ ЖЕ

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

Благодарю.

1 ответ

Решение

Во втором примере будет выделяться меньше памяти при каждом вызове строки.Split(,) выделит новый массив строк.

Если это "горячая точка" в вашем коде, вы можете вообще не вызывать string.Split и вместо этого использовать Regex для поиска ваших перечислений.

Другие вопросы по тегам