【问题标题】:Best practices for memory performance [closed]内存性能的最佳实践 [关闭]
【发布时间】:2017-11-10 19:15:59
【问题描述】:

我有以下代码。关于哪种方法对内存性能更好,我们有过争论。如果我们不使用单独的变量并使用它,它会有什么不同吗?它会影响那么这是可能的解决方案吗?

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

谢谢。

【问题讨论】:

  • 测试、测试、基准测试和测试。只有这样你才能得到具体的答案。除此之外,最佳实践问题不在此处讨论。
  • 如果您编写“字符串类型”代码,那么担心性能通常还为时过早......通常人们会期望属性的不同行为 - x.p = v; AssertTrue(x.p == v) 对于所有 v 与帖子中显示的代码进行了一些奇怪的转换,并且很少满足设置属性更改其值的条件。
  • 第二个 sn-p 在我看来是不费吹灰之力的。以相同的方式拆分相同的字符串 5 次而不是 1 次对我来说似乎很荒谬。

标签: c# memory-management heap-memory fragmentation stack-memory


【解决方案1】:

第二个示例将分配更少的内存,因为每次调用 string.Split(,) 都会分配一个新的字符串数组。

如果这是您代码中的“热点”,您可能会考虑根本不调用 string.Split,而是使用正则表达式来搜索您的枚举。

【讨论】:

    猜你喜欢
    • 2011-01-22
    • 2011-11-21
    • 2012-05-14
    • 2010-09-21
    • 2013-09-13
    • 2014-06-19
    • 2014-01-29
    • 2014-01-13
    • 2012-01-17
    相关资源
    最近更新 更多