ToList()所带来的性能影响
来源:互联网 发布:mac 安装lnmp 编辑:程序博客网 时间:2024/05/21 16:57
前几天优化师弟写的代码,有一个地方给我留下很深刻的印象,就是我发现他总是将PLINQ的结果ToList<>(),然后再返回给主程序,对于这一点我十分不解,于是去问他是什么原因,得到的答案很幽默:因为习惯。
有时候对于方法的不甚了解加上“习惯”,往往是程序性能和稳定性终结者,就拿这个Case来说吧,原始代码如下:
经过以上PLINQ后,泛型列表中大概还剩下60万至100万条数据,然后我们这位师弟做了两个很“施瓦辛格”的动作:ToList<>()和Count(),测试程序运行在一台4*2G HZ,12GB内存的服务器上,竟然跑了2天多!我觉得正式这两个方法导致了程序性能的降低,为了 确定我的判断,我分别在以上代码、ToList<>()和Count()周围加上了StopWatch计时器,然后将结果以文本的形式输出:
● 100万数据PLINQ:
==========3/26/2011 01:34:31 PM ===========
**(GetDeletedRecords)Start PLINQ(LINQ FITTER)
==========3/26/2011 01:38:38 PM ===========
**(GetDeletedRecords)Finish PLINQ (LINQ FITTER)
● 80万数据ToList <>():
==========3/26/2011 03:22:10 PM ===========
**(GetDeletedRecords)Start Get List
● 80万数据Count():
==========3/28/2011 02:12:09 PM ===========
**(GetDeletedRecords)Start Get Count
==========3/28/2011 08:50:55 PM ===========
** (GetDeletedRecords)Finish Get Count
日志格式是这样:任务开始时输出当前时间和“Start”,任务结束时输出“Finish”,当从日志中可以看出,PLINQ的效率还是很高的,只运行了几分钟;ToList<>()方法在运行了1天多后人为终止,所以只有Start没有Finish;Count()方法也运行了6小时多。
所以最终优化方案很简单,去掉了ToList和Count,程序从几天的运行时间一下缩短到几个小时。
- ToList()所带来的性能影响
- innodb_flush_method带来的性能影响
- DNS服务器故障所带来的影响
- 删除SDE.DBF所带来的影响oracle的…
- 网站优化中404页面所带来的影响
- 浅谈未来市场利率化所带来的影响
- 如何清除浮动元素所带来的影响?
- 浮动布局所带来的影响以及如何清除浮动
- 浮动布局所带来的影响以及如何清除浮动
- 浮动布局所带来的影响以及如何清除浮动
- 浮动布局所带来的影响以及如何清除浮动
- 存储架构对视频服务器带来的性能影响分析
- 深入理解javascript全局变量与局部变量的所带来的问题的影响
- Metadata Locking在5.5里所做改动带来的影响(2)
- Metadata Locking在5.5里所做改动带来的影响
- Metadata Locking在5.5里所做改动带来的影响
- Metadata Locking在5.5里所做改动带来的影响
- tomcat server.xml中context标签下path值不同所带来的影响
- ubuntu10.04 gtk环境搭建
- JSF el中使用enum
- pcap和libnet编译
- mp4(H264容器)的详细文件格式分析
- 约瑟夫环-学习笔记
- ToList()所带来的性能影响
- 李彦宏:互联网一定是财富最透明的地方
- 各类Http请求状态(status)及其含义
- 转:C++不定参数的用法
- 修改vmware的硬盘大小
- 网址
- Silverlight 5.0 Beta版新特性 相关资料搜集
- 俯瞰Struts2的整体流程
- jQuery select的操作实现代码