最近遇到一个关于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)的性能比较的更多相关文章

  1. Guice 学习(六)使用Provider注入服务( Provider Inject Service)

    1.定义接口 package com.guice.providerInject; import com.google.inject.ProvidedBy; public interface Servi ...

  2. 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 ...

  3. 【最后一篇API译文】Android开发-API指南- Contacts Provider

    Contacts Provider 今年加入了某字幕组,加之杂事颇多,许久未添新文了,惭愧之极. 在听闻 Google 即将重返中国后,近日忽又发现官方网站正在放出 API 中文版,比如本文.当然不是 ...

  4. Android开发-API指南- Calendar Provider

    Calendar Provider 英文原文:http://developer.android.com/guide/topics/providers/calendar-provider.html 采集 ...

  5. Calendar Provider

    英文原文:http://developer.android.com/guide/topics/providers/calendar-provider.html 关键类 CalendarContract ...

  6. 【React.js小书】动手实现 React-redux(五):Provider - 方志

    我们要把 context 相关的代码从所有业务组件中清除出去,现在的代码里面还有一个地方是被污染的.那就是 src/index.js 里面的 Index: 1234567891011121314151 ...

  7. Dubbo No provider问题排查思路

    本文已收录 https://github.com/lkxiaolou/lkxiaolou 欢迎star. 不想看字的同学可直接划到底部查看思维导图 问题分析 使用过Dubbo的朋友很多都碰到过如下报错 ...

  8. Membership三步曲之进阶篇 - 深入剖析Provider Model

    Membership 三步曲之进阶篇 - 深入剖析Provider Model 本文的目标是让每一个人都知道Provider Model 是什么,并且能灵活的在自己的项目中使用它. Membershi ...

  9. Ionic2学习笔记(5):Provider

    作者:Grey 原文地址: http://www.cnblogs.com/greyzeng/p/5547646.html             Provider是一种为App提供数据源的方式, 举个 ...

随机推荐

  1. linux gnome 安装

    首先先下载x-window的内核:apt-get -u install x-window-system-core:下载登录管理界面gdm或kdm:apt-get -u install gdm gdm- ...

  2. 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 ...

  3. linux服务器上

    命令行>mysql -uwin -pwin2009进入mysql command状态>use mindo时入mindo数据库>source 500sql.txt执行sql

  4. JS中checkbox组件的使用

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  5. iOS之核心动画(Core Animation)

      Core Animation,中文翻译为核心动画,它是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍.也就是说,使用少量的代码就可以实现非常强大的功能. Core ...

  6. kickstart安装

    1.生成ks.cfg 文件 安装Kickstart # yum install system-config-kickstart 8.2 在桌面环境下配置Kickstart 启动X Windows 环境 ...

  7. JavaScript无限极菜单

    <!DOCTYPE html> <html> <head> <title> New Document </title> <meta c ...

  8. CentOS 6.3 安装ATI显卡驱动

    环境: centos 6.3  内核(GNU貌似大家都知道) 显卡:ATI Mobility Radeon HD 3470 安装显卡流程: 1.官网下载最新驱动 http://support.amd. ...

  9. 一个不错的flash 模板

    听到好听的背景音乐,而且效果也挺不错的,忽然感觉flash好强大呀 1.模板浏览地址:http://www.cssmoban.com/cssthemes/5229.shtml 2.模板演示地址:htt ...

  10. 动态使用webservice,以及含有ref类型的参数的问题

    public class WSHelper { /// < summary> /// 动态调用web服务 /// < /summary> /// < param name ...