C# 性能

C# 性能,c#,properties,C#,Properties,如果我这样做,我需要知道是否存在一些性能问题/考虑: public Hastable Properties=... public double ItemNumber { get { return (double)Properties["ItemNumber"]; } set { ItemNumber = value; Properties["ItemNumber"] = value; } } Public string Property2.... Public ... Pro

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

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

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

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

您分析过它吗?这是你应用程序的瓶颈吗?@irsog,你提到的问题完全不同。。。我建议你再读一遍。如果不在一千万次的密集计算中使用,它不应该成为你应用程序的瓶颈。用字典省去你的词组。您建议的两段代码都不执行相同的操作。第一个可以保存很多值,第二个-只有一个这可能是
集合
部分与站点相关的问题…我做了一个快速负载测试,速度快了5倍。但我如何才能决定它是否太快或是可以接受?这将取决于您的项目在速度和响应时间方面的要求。不同的项目有不同的要求。在为您正在开发的产品编写规范时,应该在设计阶段对其进行定义。