datatable.select 性能测试

孤剑 2007-07-01 01:31:11
这里的代码样式更好看:
http://www.cnblogs.com/AloneSword/articles/801989.html


由于刚好看到网上的一篇帖子,所以做了这个测试。测试结果发现:
1、DataView.RowsFilter 比 DataTable.Select 性能低很多。查询了MSDN ,发现 DataView 重要的一个功能就是 “筛选”数据,为什么性能还不如 DataTable.Select() 呢?

2、当做 1000w 数据测试时,出现了 SystemOutOfMemory 的异常。主要在这句:
// 1000w 数据时,出现了 SystemOutOfMemory 的异常
row = mDataTable.NewRow();
问题是:难道使用 NewRow() 时,有上限限制?

3、1000w 数据测试时,出现一个现象 :添加前300w 数据时,时间花费都差不多;300-400w 时,时间是前面的一倍;400-500w 时间更是长久;好像越到后来时间越长?为什么呢?
1000w 数据测试“循环添加数据”功能的结果:
Adding data ...
Readed 1000000 rows [ 7651.0016 ms]...
Readed 2000000 rows [ 8341.9952 ms]...
Readed 3000000 rows [ 7030.1088 ms]...
Readed 4000000 rows [ 24545.2944 ms]...
Readed 5000000 rows [ 70251.016 ms]...
Readed 6000000 rows [ 369591.4464 ms]...
Readed 7000000 rows [ 668561.344 ms]...
Readed 8000000 rows [ 1384751.1744 ms]...
// 再往下就出现了 2 中所描述的异常

人老实,测试这么做也是没有办法,自己测试时,发现了好多需要改进的地方,希望大家不要见笑,帮我看看上面的问题,谢谢!

放上代码居然说内容太长,晕!

详细内容和测试代码看这里吧!
http://www.cnblogs.com/AloneSword/articles/801989.html
...全文
557 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
孤剑 2007-07-04
  • 打赏
  • 举报
回复
密度有点大,一天不看就下沉到这里了。
孤剑 2007-07-04
  • 打赏
  • 举报
回复
lincai:
小数据筛选用怎么没有体现出 DataView 的好处呢?
lincai 2007-07-03
  • 打赏
  • 举报
回复
一般用DataVeiw和DataTable刷选都是小数据的,大数据都在数据库中刷选了。
孤剑 2007-07-03
  • 打赏
  • 举报
回复
现在的问题是我想知道哪个三个的答案阿
小D2013 2007-07-02
  • 打赏
  • 举报
回复
每次只处理小部分
孤剑 2007-07-02
  • 打赏
  • 举报
回复
哈哈,学习一下
runrunrun 2007-07-01
  • 打赏
  • 举报
回复
别人上亿数据是在数据库里,一次只处理一小部分数据。哪有把上亿数据全读到内存里的
孤剑 2007-07-01
  • 打赏
  • 举报
回复
问一下,为什么别人测试可以说是千万,上亿次测试呢?
孤剑 2007-07-01
  • 打赏
  • 举报
回复
哈哈,谢谢,知道了一个问题。
学习了。
等结贴一起给分阿。
intotheland 2007-07-01
  • 打赏
  • 举报
回复
汗,楼上电脑多大内存?
10000000*4/1024=39062.5MB=38.15GB
你的数据太多导致,物理内存不够,开始使用虚拟内存,所以速度越来越慢,最后虚拟内存也不够了,只好给你SystemOutOfMemory了,楼主可以试试监控程序运行时所占用的内存大小看看,是不是这样.

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧