【问题标题】:Property performance物业表现
【发布时间】:2013-03-17 17:23:29
【问题描述】:

如果我这样做,我需要知道是否存在一些性能问题/考虑:

public Hastable Properties=...
public double ItemNumber
{
  get { return (double)Properties["ItemNumber"]; }
  set
{
  ItemNumber = value;
  Properties["ItemNumber"] = value;
}
}

Public string Property2....

Public ... Property 3....

而不是直接访问属性:

public string ItemNumber { get; set; }
public string prop2 { get; set; }
public string 3...{ get; set; }

【问题讨论】:

  • 你分析了吗?它是您应用程序的瓶颈吗?
  • @irsog,你提到的问题完全不同……建议你再读一遍。
  • 如果它不用于一些密集的 1000 万循环计算,它不应该成为您应用程序的瓶颈。使用 Dictionary 来避免演员阵容。你建议的代码不要做同样的事情。第一个可以保存许多值,第二个 - 只有一个
  • set 部分可能存在与网站相关的问题...

标签: c# properties


【解决方案1】:

这取决于您的性能要求...访问Hashtable 并转换结果显然比仅访问字段慢(自动属性隐式创建字段),但取决于您要执行的操作,它可能会或可能不会产生重大影响。在这两种情况下,复杂度都是O(1),但访问哈希表显然需要更多周期...

【讨论】:

    【解决方案2】:

    嗯,与直接属性访问相比,它肯定会更慢,因为 get 和 set 操作需要执行更多的代码。但是由于您使用的是 Hashtable,因此访问速度应该非常快。由于您使用的是弱类型集合,因此您还会因为强制转换而获得额外的开销。装箱和拆箱之类的事情是有代价的。问题是所有这些是否会显着影响您的应用程序的性能。这真的取决于你的要求。我建议您执行一些负载测试,看看这是否会成为瓶颈。

    【讨论】:

    • 我进行了快速负载测试,速度提高了 5 倍。但是我如何才能决定它是否也可以接受?
    • 这将取决于您的项目在速度和响应时间方面的要求。不同的项目有不同的要求。在为您正在开发的产品编写规范时,应该在设计阶段定义它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 2011-09-22
    • 2019-06-14
    • 1970-01-01
    • 2014-10-19
    • 2014-03-29
    • 1970-01-01
    相关资源
    最近更新 更多