【问题标题】:Would using a Generic List over a DataTable cause less performance overhead?在 DataTable 上使用通用列表会导致更少的性能开销吗?
【发布时间】:2012-04-12 09:05:18
【问题描述】:

我是通用列表的忠实粉丝,并且在我从事的任何项目中都会使用它们。但我目前正在处理由外部方编写的另一个项目,发现页面加载速度很慢。在某些情况下,页面加载只需 2 秒多一点。

通过初步调查,大多数页面都散布着大量数据表,这些数据表存储了 1000 多行数据。我原以为声明和设置 DataTable 列会增加开销。

现在我只是质疑如果我要使用通用列表 (List) 并使用 LINQ 过滤所需数据,可能会减少性能滞后。

我知道可能还有其他问题导致页面加载缓慢,但看到通过 DataTables 处理大量数据似乎有点过头了。

【问题讨论】:

  • 您猜不到的性能问题。你测量。选择一个像样的分析器来找到你的热点并修复它们。
  • 您应该在进行任何更改之前进行进一步调查。获取用于填充 DataTables 的数据可能是个问题。

标签: c# asp.net datatable generic-list


【解决方案1】:

如果有几个 DataTable 对象,每个对象都有数千行,那么这些对象是否在每个页面上填充?如果是这样,我并不感到惊讶它需要一段时间 - 并且简单地使用列表不会有帮助,因为我预计瓶颈会在多个查询中获取大量数据。 IMO,在那里创建DataTable 的开销可能微不足道。 (我通常也更喜欢使用列表等,但出于清洁而不是性能的原因。)

当然,您应该真正分析慢速页面以找出瓶颈所在,而不是猜测。如果这是一个 MVC 项目,请查看 MiniProfiler

【讨论】:

  • 我认为通用列表通常比使用数据表更有效。我想我错了。 :-) 不幸的是,我没有使用 MVC,但除非您有任何建议,否则我会看看其他 .NET 分析器?
  • @sbhomra: 不,使用列表可能比使用 DataTable 更有效 - 但如果大部分时间都花在获取数据上,那么你应该这样做正在查看,而不是 获取之后用它做什么。恐怕我对网络分析没有任何特别的建议。
  • 感谢您的信息。很荣幸有一个 SO Legend 作为你自己回答我的问题。 ;-)
猜你喜欢
  • 2012-05-18
  • 2011-08-19
  • 2012-01-24
  • 2011-02-24
  • 1970-01-01
  • 2021-11-30
  • 2020-07-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多