【发布时间】:2012-09-20 12:04:43
【问题描述】:
我目前正在对现有 C# 网站进行性能调整。有一个类说.. MyUtil.cs。此类已在所有网页中广泛使用。在某些页面上创建了大约 10/12 个实例 (MyUtil)。我运行了“Redgate”性能分析器。根据 RedGate,对象创建是一项代价高昂的操作。 请注意,每个实例都会设置特定的属性并执行特定的操作。所以我不能按原样重用对象。我必须重置所有成员变量。
我想优化这段代码。我考虑过以下选项。请帮助我评估哪种方法更好:
(1) 在“MyUtil.cs”类中创建一个“Reset”方法,该方法将重置所有成员变量(其中有 167 个 :(..),以便我可以在页面类中重用一个对象。
(2) 继续创建多个对象(我在“MyUtil”中有 Dispose() 方法)
(3) 我想到了“对象池”,但我必须再次重置成员。我认为最好在页面级别池化对象并释放它们,而不是让它们保持在项目级别。
对此的任何回复将不胜感激。提前谢谢..!
【问题讨论】:
-
创作的哪一部分是昂贵的?是“弄清楚167个值应该是什么”吗?如果是这样,你能改进吗? 自己创建对象并不那么昂贵;如果您仍然需要设置 167 值,那么某种池是不可能提供帮助的。
-
你的班级究竟做了什么?听起来像是一个糟糕的架构决策,但如果我们不知道具体细节,我们无法真正提供答案。
-
鉴于我对 MyUtil 知之甚少,它闻起来像神级课程。
-
+1 到@MarcGravell,你计算出这些成员变量的设置需要多长时间吗?
-
如果您想要一个有意义的答案,我认为您必须向我们提供更多信息。
标签: c# performance object reusability