.net datatable 查找一行时的方法比较datatable.rows.find vs datable.select vs dataview vs for loop

来源:互联网 发布:c高性能编程 pdf 编辑:程序博客网 时间:2024/04/27 23:56

在.net 中,从datatable里查找一行有四种实现方法,但是哪种性能最高呢?

经过对一个2万行的表的实验比较如下:

1,datatable.rows.find 

这种方法是最高效的方法。在实验表的规模下,所需时间(ticks)是0。

但是这种方法只能查询主健列。

2,datable.select

这种方法是最耗时的。在实验表的规模下,所需时间(ticks)是800,000左右。

这种唯一的优点是写法简单。

3,dataview

这种方法相对比较高效。在实验表的规模下,所需时间(ticks)是90,000左右。

4,对datable for loop循环

看起来最原始的思路,比较麻烦的写法,但有着相当不错的性能。

所需时间(ticks)是0-70,000。时间随所查找的行所在的位置不同而呈近线性变化。


结论,

如果是查找单行,

如果是根据主健查找rows.find,否则for loop


如果是查找多行,

用dataview ;忘记datable.select吧。

--------------------------------------------------------------

20150717更新,

新换了实现表,二百万行数据,有组合主键.

对比dataview 与select 在有部分主键的情况下的查找多行比较

结果居然是完全不同,select 几乎总是比dataview快一到两个数量级




0 0