.where(provider).FirstOrDefault()和.FirstOrDefault(provider)的性能比较
最近遇到一个关于Linq的问题,
.where(provider).FirstOrDefault();和.FirstOrDefault(provider);的性能比较
关于这个主要有以下三种说法,但这方面的资料比较少,我找到的就下面着几个地方。
第一种说法:.where(provider).FirstOrDefault()比较快,
支持这个观点的资料:http://stackoverflow.com/questions/8663897/why-is-linq-wherepredicate-first-faster-than-firstpredicate
第二种说法:.FirstOrDefault(provider)比较快
感觉FirstOrDefault更加直接有效。
第三种说法:差不多一样快,这种说法也比较多,因为从linq的lazy来说及两种方法核心都是用List.GetEnumerator的来说应该是一样的
支持这个观点的资料:http://prashantvc.wordpress.com/2013/03/07/where-firstordefault-vs-firstordefault/
别人说的做为参考,还是自己测试一下

但通过测试的结果貌似是验证第一种说法。
最后在msdn上找到了我认为的答案
http://msdn.microsoft.com/en-us/library/bb882641.aspx
结果是,这两种性能完全看data的provider
有的情况直接(Immediate)执行快,有的情况延时的(Deferred) 快
比如说data是连接数据库,或者『wellcoded』的远端数据源,Deferred streaming肯定更快
但是如果是完全备置的数据而且索引良好访问顺畅,那直接(Immediate)执行会快点(主要是少了一层yeild)。
这个具体可以通过上面的msdn网站查找其类型。
ps:这个地方的应用不局限于这两种方法,Linq的其它方法也都有着区别,在应用的时候查看一下该方法的类型应该是有帮助的。
.where(provider).FirstOrDefault()和.FirstOrDefault(provider)的性能比较的更多相关文章
- Guice 学习(六)使用Provider注入服务( Provider Inject Service)
1.定义接口 package com.guice.providerInject; import com.google.inject.ProvidedBy; public interface Servi ...
- Developing a Custom Membership Provider from the scratch, and using it in the FBA (Form Based Authentication) in SharePoint 2010
//http://blog.sharedove.com/adisjugo/index.php/2011/01/05/writing-a-custom-membership-provider-and-u ...
- 【最后一篇API译文】Android开发-API指南- Contacts Provider
Contacts Provider 今年加入了某字幕组,加之杂事颇多,许久未添新文了,惭愧之极. 在听闻 Google 即将重返中国后,近日忽又发现官方网站正在放出 API 中文版,比如本文.当然不是 ...
- Android开发-API指南- Calendar Provider
Calendar Provider 英文原文:http://developer.android.com/guide/topics/providers/calendar-provider.html 采集 ...
- Calendar Provider
英文原文:http://developer.android.com/guide/topics/providers/calendar-provider.html 关键类 CalendarContract ...
- 【React.js小书】动手实现 React-redux(五):Provider - 方志
我们要把 context 相关的代码从所有业务组件中清除出去,现在的代码里面还有一个地方是被污染的.那就是 src/index.js 里面的 Index: 1234567891011121314151 ...
- Dubbo No provider问题排查思路
本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star. 不想看字的同学可直接划到底部查看思维导图 问题分析 使用过Dubbo的朋友很多都碰到过如下报错 ...
- Membership三步曲之进阶篇 - 深入剖析Provider Model
Membership 三步曲之进阶篇 - 深入剖析Provider Model 本文的目标是让每一个人都知道Provider Model 是什么,并且能灵活的在自己的项目中使用它. Membershi ...
- Ionic2学习笔记(5):Provider
作者:Grey 原文地址: http://www.cnblogs.com/greyzeng/p/5547646.html Provider是一种为App提供数据源的方式, 举个 ...
随机推荐
- linux gnome 安装
首先先下载x-window的内核:apt-get -u install x-window-system-core:下载登录管理界面gdm或kdm:apt-get -u install gdm gdm- ...
- CSharp Algorithm - How to traverse binary tree by breadth (Part II)
/* Author: Jiangong SUN */ Here I will introduce the breadth first traversal of binary tree. The pri ...
- linux服务器上
命令行>mysql -uwin -pwin2009进入mysql command状态>use mindo时入mindo数据库>source 500sql.txt执行sql
- JS中checkbox组件的使用
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- iOS之核心动画(Core Animation)
Core Animation,中文翻译为核心动画,它是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍.也就是说,使用少量的代码就可以实现非常强大的功能. Core ...
- kickstart安装
1.生成ks.cfg 文件 安装Kickstart # yum install system-config-kickstart 8.2 在桌面环境下配置Kickstart 启动X Windows 环境 ...
- JavaScript无限极菜单
<!DOCTYPE html> <html> <head> <title> New Document </title> <meta c ...
- CentOS 6.3 安装ATI显卡驱动
环境: centos 6.3 内核(GNU貌似大家都知道) 显卡:ATI Mobility Radeon HD 3470 安装显卡流程: 1.官网下载最新驱动 http://support.amd. ...
- 一个不错的flash 模板
听到好听的背景音乐,而且效果也挺不错的,忽然感觉flash好强大呀 1.模板浏览地址:http://www.cssmoban.com/cssthemes/5229.shtml 2.模板演示地址:htt ...
- 动态使用webservice,以及含有ref类型的参数的问题
public class WSHelper { /// < summary> /// 动态调用web服务 /// < /summary> /// < param name ...