【发布时间】:2013-01-02 13:07:25
【问题描述】:
我想问一下,对对象集合的静态引用与拥有单例类并将集合作为单例类的普通字段之间是否存在性能差异。
据我所知,静态字段存储在堆的不同部分,所以在这种情况下使用单例时引用的局部性不是更好吗?
【问题讨论】:
-
我猜你在谈论“堆的不同部分”时是指不同的世代,但我很确定这些在性能上没有区别。唯一的区别是实际将对象从一代移动到另一代,但在谈论集合时,影响仍然接近于不存在。您应该更关心集合中的数据,以及该集合是否是您的问题的正确类型。问一个与所用语言如此接近的性能问题从来都不是一个好的开始恕我直言。
-
参考地点是什么?请记住,在任何一种情况下,该字段都只是一个参考 - 而在 both 情况下,需要一个静态字段。 (对于单例,静态字段是引用单例本身的字段。)
-
我的建议是MeasureIt你自己...
-
感谢大家的cmets。我有一个错误的印象,即当一个字段是静态的时,该字段的内存将在堆中的“其他地方”分配。我不想谈论世代 - 这是我的一个误解,因为我目前正在了解有关 CLR 的更多细节......
标签: c# performance static singleton