查看数据人口的最佳实践?

时间:2009-05-13 01:04:32

标签: .net performance garbage-collection

我一直在研究.NET应用程序并遇到内存错误(我是一个可以做其他事情的java开发人员),我一直在考虑性能。我发布的内容不是内存问题。记忆问题刚开始让我思考。

我在ASP.NET应用程序中重复了一个趋势,我在无数的J2EE应用程序中使用过:使用Business Entities填充下拉列表。我想的越多,我就越不喜欢它。例如,在我正在运行的应用程序上,我们有一个当前项目的下拉列表。项目是对象图。但是,要创建列表,我们将撤回所有项目,创建图形并仅使用id和显示名称。这似乎是一种可怕的浪费。公平地说,dal层完全是手写的。首席架构师不允许像NHibernate这样的ORM。

我意识到所有这些对象都在GEN0中并且很快被垃圾收集。令我担心的是,我对GC征税。处理GC所需的CPU的5%是CPU的5%,我不能在其他地方使用。这个网站是我真正尊重的少数网站之一。你们都觉得怎么样?为此使用实体模型是不是很糟糕?我应该创建一组仅容纳显示值和id的IdValue对象吗?创建这样的视图对象层(我不认为这将进入业务层)只是创建冗余代码?

谢谢, JPD

3 个答案:

答案 0 :(得分:1)

不要担心对GC征税,它会根据您的应用程序调整自己以获得最佳性能。是的,最好减少你的记忆,但我认为这并不像你想象的那么严重。

一个好的DAL,只允许您返回所需的数据,这将提高应用程序的性能,还会减少应用程序所需的内存量。但无论你是否使用“太多”内存,我想在大多数情况下GC都可以正常处理它。

答案 1 :(得分:1)

过去几年我一直在研究业务线.NET应用程序,并且尚未遇到通过尝试帮助垃圾收集器更有效地工作而解决的性能问题。

另一方面收集指标对提高性能,内存使用等非常有帮助。

答案 2 :(得分:0)

另一种方法是为您的目的创建轻量级物体。在这种情况下,您将拥有一个只有id和显示名称的轻量级项目对象。然后需要重新使用现有DAL或创建轻量级DAL版本。