什么';与其他.Net集合类相比,数据集的内存成本是多少?

什么';与其他.Net集合类相比,数据集的内存成本是多少?,.net,.net,在我们现在不太现代的n层应用程序中,我们对数据集进行了智能化的使用,并且我们正在评估对其他较轻对象(即典型化对象的集合)的更改 有没有关于这样做可以增加多少内存消耗的参考文献?这个问题相当主观,取决于许多在此无法显示的因素。如果问题是数据集是否会比相同数量对象的一般集合消耗更多内存,那么答案通常是肯定的 因为问题是它在多大程度上取决于您如何使用数据集(即:类型化数据、数据视图、索引?)的具体情况,并且只能通过测试进行准确测量 但是,根据您使用数据集的方式,您可能需要重新构建大部分功能。数据集内存

在我们现在不太现代的n层应用程序中,我们对数据集进行了智能化的使用,并且我们正在评估对其他较轻对象(即典型化对象的集合)的更改


有没有关于这样做可以增加多少内存消耗的参考文献?

这个问题相当主观,取决于许多在此无法显示的因素。如果问题是数据集是否会比相同数量对象的一般集合消耗更多内存,那么答案通常是肯定的

因为问题是它在多大程度上取决于您如何使用数据集(即:类型化数据、数据视图、索引?)的具体情况,并且只能通过测试进行准确测量


但是,根据您使用数据集的方式,您可能需要重新构建大部分功能。

数据集内存使用的主要影响因素是DataTable中每一行所需的DataRow对象以及自动为每一列生成的索引。列值的存储效率很高,这是无法改进的。用泛型集合的集合替换此集合将允许消除DataRows,如果DataTable没有太多的列,这将大约节省50%


索引是您需要担心的。它们对数据集进行查询的速度非常快,除非您提供某种自定义替换,否则您将丢失这些数据。你是否需要提供一个替代品是不可能的,这取决于你运行的查询类型。

我几乎认为这是一种问题类型,答案取决于很多因素,包括你的类型化对象的结构。你试过运行一些基准测试吗?就像将数千个对象与数据集中的相同数据进行比较一样。我不确定是否可以将数据集与脱机关系数据表与集合类型(类似对象的列表)进行比较。我们可以比较列表和数组列表、数组和列表,但不能比较数据集。您好@sash,感谢您的贡献。我的意思是,LINQtoEntities和LINQtoSQL都从关系数据源生成对象集合,它们是使用数据集的ADO.Net的自然替代品。所以,从这个角度来说,我认为它们是可以比较的。好吧,现在我明白你的意思了。在本例中,您需要比较两种技术—ADO.NET和Linq到SQL(Linq到实体)。所以,比较将不是数据集和列表之间的比较,而是这些技术与数据源的工作速度。Linq是一个简单的,但速度较慢,但我认为它与它使用的数据结构无关。谢谢你的提示。我们主要使用数据集进行编辑,就像持久对象一样,所以我们不太使用索引功能。我们更多使用的是RowVersion功能,以了解编辑的内容。