在写扩展方法时,看到有人用==null这个方法,说快,上网找了些资料,最后在csdn的博客上看到了一篇文章,说实测是后两者快,于是我也试着做了一个程序运行了一下,却发现这样的结果:

我测试了一个,发现结果相反:
第一次:
方法:(String.IsNullOrEmpty( s )): 用时=::02.3015335 进入次数=
方法:(s == null || s.Length == ): 用时=::02.6747835 进入次数=
第二次:
方法:(String.IsNullOrEmpty( s )): 用时=::02.3115417 进入次数=
方法:(s == null || s.Length == ): 用时=::02.6607726 进入次数=
第三次:
方法:(String.IsNullOrEmpty( s )): 用时=::02.3205477 进入次数=
方法:(s == null || s.Length == ): 用时=::02.6607744 进入次数= 第N次:
方法:(String.IsNullOrEmpty( s )): 用时=::02.2965310 进入次数=
方法:(s == null || s.Length == ): 用时=::02.6797865 进入次数= 我实现的测试和楼主的刚好相反了。
我的环境:
win8 64位
8G内存

测完之后我想了一下,这只是一个简单的判断,实际情况应该不至于出现这种逆转性的反差吧?

上面的测试我是在VS里直接运行测试的,我觉得有必要部署一下在IIS里测试一下,于是马上动手,测试结果如下:

方法:(String.IsNullOrEmpty( s )): 用时=::00.3462293 进入次数=
方法:(s == null || s.Length == ): 用时=::00.2911963 进入次数= 方法:(String.IsNullOrEmpty( s )): 用时=::00.3442286 进入次数=
方法:(s == null || s.Length == ): 用时=::00.3172130 进入次数= 方法:(String.IsNullOrEmpty( s )): 用时=::00.3452307 进入次数=
方法:(s == null || s.Length == ): 用时=::00.2911941 进入次数= 方法:(String.IsNullOrEmpty( s )): 用时=::00.3462308 进入次数=
方法:(s == null || s.Length == ): 用时=::00.2921954 进入次数= 方法:(String.IsNullOrEmpty( s )): 用时=::00.3452311 进入次数=
方法:(s == null || s.Length == ): 用时=::00.2931936 进入次数=

可以看到,这次的结果跟楼主的情况相符合了。

找到的文章地址:http://blog.csdn.net/meifage2/article/details/6621658

IsNullOrEmpty和s == null || s.Length == 0哪个快的更多相关文章

  1. java——arr == null || arr.length == 0

    这两者是不同的: arr == null; int[] arr = null; arr.length == 0; int[] arr =new int[0];

  2. Java: arr==null vs arr.length==0

    当 arr 是一个array时,写Java开始的corner case常常会写类似下面的语句: if(arr == null || arr.length == 0){ return 0; } 其实这是 ...

  3. 数组中array==null和array.length==0的区别

    //代码public class Test1 { public static void main(String[] args) { int[] a1 = new int[0]; int[] a2 = ...

  4. jvm源码解读--02 Array<u1>* tags = MetadataFactory::new_writeable_array<u1>(loader_data, length, 0, CHECK_NULL); 函数引入的jvm内存分配解析

    current路径: #0 Array<unsigned char>::operator new (size=8, loader_data=0x7fd4c802e868, length=8 ...

  5. mysql 将null转代为0

    mysql 将null转代为0 分类: Mysql2012-12-15 11:56 6447人阅读 评论(1) 收藏 举报 1.如果为空返回0 select ifnull(null,0) 2.如果为空 ...

  6. NULL, NUL, EOF, '\0',0区别

    NULL: 定义为0或0L或(void *)0,用于指示一个指针值是空,即什么都不指:'\0': 用且只用字符串结束符;NUL : 0x00,0值字符,可以用于结束ASCII字符串,和'\0'类似,但 ...

  7. Javascript中的undefined、null、""、0值和false的区别总结

    在程序语言中定义的各种各样的数据类型中,我们都会为其定义一个"空值"或"假值",比如对象类型的空值null,.NET Framework中数据库字段的空值DBN ...

  8. sql语句常用功能(null值转换为0)

    COALESCE(规格,' ') 或者 COALESCE(规格,0) select * from ( ) 客户,() 物料号,p4.name 内部批次,p4.outsidename 外部批次,p1.库 ...

  9. Golang http post error : http: ContentLength=355 with Body length 0

    参考:https://stackoverflow.com/questions/31337891/net-http-http-contentlength-222-with-body-length-0 问 ...

随机推荐

  1. Web服务器压力测试一例

    近期部门新上线一个服务,我们使用ab和locust分别测试 目前项目属于demo阶段,对访问量的支持不要求太高,我们暂且设定在500请求,20并发 工具介绍 ab ab全称为:Apache HTTP ...

  2. shu_1186 字符排列问题

    cid=1079&pid=23">http://202.121.199.212/JudgeOnline/problem.php?cid=1079&pid=23 分析: ...

  3. 图的邻接表存储 c实现

    图的邻接表存储 c实现 (转载) 用到的数据结构是 一个是顶点表,包括顶点和指向下一个邻接点的指针 一个是边表, 数据结构跟顶点不同,存储的是顶点的序号,和指向下一个的指针 刚开始的时候把顶点表初始化 ...

  4. idea git merge代码

    1.点击idea 右下角的红框区域 2.出现如下截图,第一个红框是本地dev merge,也就是说可以从从本地的dev仓库merge,第二个红框表明可以从远程的git dev merge 第三个红框表 ...

  5. C#操作项目配置文件

    前言 对于项目配置文件的读取和修改,.net 提供了ConfigurationManager(位于System.Configuration命名空间) 和WebConfigurationManager( ...

  6. c#操作sqlite

    一.添加选中dll引用如下图 二.下载一个sqlite建表建库工具sqlitedatabasebrowser如下图 三.使用sqlitedatabasebrowser建库建表 四.插入表数据如下图 四 ...

  7. Best Time to Buy and Sell Stock I && II

    Say you have an array for which the ith element is the price of a given stock on day i. If you were ...

  8. mysql5 乱码问题解决方案

    今天在写项目时碰到了mysql数据库数据乱码的问题,也从网上查了很多方法,前后折腾了两个小时才终于调整好.现在就把调整过程中碰到的一些问题记录下来: 1.项目是SSH架构,一开始我以为是调用hiber ...

  9. oracle中的初始化参数文件

    oracle初始化参数文件管理 oracle实例是指运行状态下的oracle软件,是由内存结构跟一些进程结构组成的,主要实现数据库的访问跟控制功能,是oracle的核心. 初始化参数文件是oracle ...

  10. Node.js包管理器:

    Node.js包管理器: 当我们要把某个包作为工程运行的一部分时,通过本地模式获取,如果要在命令行下使用,则使用全局模式安装 使用全局模式安装的包并不能直接在JavaScript文件中用require ...