1

我目前正在开发一个 Web 应用程序。我只是想知道当用作 DataGridView 或 DropDownList 控件的 DataSource 时,哪个性能更好。

我相信 DataTable 更难创建,除非你从 DataReader 中获取它,但是如果你有一个 ORM 层,它抽象了 DataReader 等 DataAccess 类的使用,并且 ORM 库通常返回一个数组列表。在这种情况下,创建 DataTable 非常繁琐。我还想知道 DataSource 如何处理 ArrayList 中 DataTextField 和 DataValueField 的选择...是通过反射吗?如果是这样,使用反射会降低性能吗?但是对于DataTable,它有一个完整的元数据,所以我认为它会更快。

你怎么看?

4

2 回答 2

3

您可能会发现两者之间的性能差异可以忽略不计。与其关注过早的优化,不如关注最容易维护和理解的选项。

于 2009-09-09T00:45:26.407 回答
1

列表(我希望您使用它而不是 ArrayList)是比 DataTable 更轻量级的结构。如果您的 ORM 返回一个 ArrayList,那么将其转换为 DataTable 然后将该 DataTable 用作控件的 DataSource 没有多大意义。这是额外的工作;一般来说,我会使用 DataTable(由 DataAdapter 填充)或者我会使用 ORM,但不能同时使用两者。尽管 DataTable 比 ArrayList 更“重”,但我怀疑差异是否那么重要。

我不认为网格或其他控件的 DataSource 对 DataTableArrayList 使用 Reflection,如果是这样,则可能不会逐行使用 Reflection。

于 2009-09-09T01:07:36.213 回答