2011-06-27 105 views
6

我一直在围绕w /规范模式来处理和包含我们的c#/ mvc应用程序中的业务逻辑。到现在为止还挺好。我确实有一个问题 - 因为我们将在堆上创建许多规范对象,这会不会以任何方式影响性能,比如说创建处理业务逻辑的辅助方法?谢谢!规范模式和性能

+1

堆分配不是在.NET中担心的事情,因为a)堆压缩意味着分配通常非常便宜,b)垃圾收集意味着堆分配的风险较小(因为您不必跟踪对象生存期仔细。) –

回答

5

虽然我确实有一个问题 - 因为我们将在堆上创建一些规范对象,会以任何方式影响性能,比如创建处理业务逻辑的辅助方法?

当然,它会影响性能,您编写的每一行代码和设计选择会以某种方式影响性能。这不太可能有意义,成为应用程序中的瓶颈或者值得关注,因为这几乎肯定是一个过早优化的例子。现在,您应该专注于正确建模您的域,并编写极其清晰和可维护的代码。更关注开发人员的生产力而不是机器生产力。 CPU周期很便宜,而且供应几乎无限。开发者周期并不便宜,而且供应也不是无限的。

但是只有您能知道它是否会影响真实世界中应用程序对实际数据的实际使用。我们不知道,因为我们不知道你的域名,不了解你的用户,不知道你期望的性能等。即使我们知道这些东西,我们仍然无法知道你的用户,不会给你一个强大的答案,因为你可以通过从现成的桌面上剔除一个探查器并查看你的应用程序实际上做了什么。

+0

谢谢,是的,我同意你对许多影响因素的评论。因为我试图遏制我们的业务逻辑,所以我发现规范模式很有用(可重用的业务逻辑,易于进行单元测试),但是我们的领导并不相信,并且感觉使用帮助程序的代码更少,对象更少,可以实现相同的结果方法。 – rh1200

2

,因为我们将创建一批在堆上规范的对象,会以任何方式

大多数设计模式权衡一些开销设计的洁净度影响性能 - 这次也不例外。通常,规格添加的内存量非常少(通常是几个参考,就是这样)。另外,他们倾向于添加一些额外的方法调用与定制逻辑。

这就是说,我不会试图过早地优化这个。这里的开销非常小,所以我很怀疑它会在任何真实世界的应用程序中引人注目。

+0

应该关注堆遍历问题,因为规范可能以任意顺序堆叠在任何数目中? – RBZ