IsNullOrEmpty和s == null || s.Length == 0哪个快
在写扩展方法时,看到有人用==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哪个快的更多相关文章
- java——arr == null || arr.length == 0
这两者是不同的: arr == null; int[] arr = null; arr.length == 0; int[] arr =new int[0];
- Java: arr==null vs arr.length==0
当 arr 是一个array时,写Java开始的corner case常常会写类似下面的语句: if(arr == null || arr.length == 0){ return 0; } 其实这是 ...
- 数组中array==null和array.length==0的区别
//代码public class Test1 { public static void main(String[] args) { int[] a1 = new int[0]; int[] a2 = ...
- 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 ...
- mysql 将null转代为0
mysql 将null转代为0 分类: Mysql2012-12-15 11:56 6447人阅读 评论(1) 收藏 举报 1.如果为空返回0 select ifnull(null,0) 2.如果为空 ...
- NULL, NUL, EOF, '\0',0区别
NULL: 定义为0或0L或(void *)0,用于指示一个指针值是空,即什么都不指:'\0': 用且只用字符串结束符;NUL : 0x00,0值字符,可以用于结束ASCII字符串,和'\0'类似,但 ...
- Javascript中的undefined、null、""、0值和false的区别总结
在程序语言中定义的各种各样的数据类型中,我们都会为其定义一个"空值"或"假值",比如对象类型的空值null,.NET Framework中数据库字段的空值DBN ...
- sql语句常用功能(null值转换为0)
COALESCE(规格,' ') 或者 COALESCE(规格,0) select * from ( ) 客户,() 物料号,p4.name 内部批次,p4.outsidename 外部批次,p1.库 ...
- 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 问 ...
随机推荐
- Android常用代码
1.图片旋转 Bitmap bitmapOrg = BitmapFactory.decodeResource(this.getContext().getResources(), R.drawable. ...
- POJ 3321 Apple Tree (DFS + 树状数组)
题意: 一棵苹果树有N个分叉,编号1---N(根的编号为1),每个分叉只能有一颗苹果或者没有苹果. 现在有两种操作: 1.某个分叉上的苹果从有变无或者从无边有. 2.需要统计以某个分叉为根节点时,它的 ...
- 关于VMware导入Linux VM找不到网卡的问题
今天遇到一个问题:由于虚拟机升级,导致以前的Linux VM(CentoS 6.7)在新的VMware里面打开,系统提示找不到网卡的问题,在网上找了好多解决办法,基本上都是一样的答案. 与网卡有关的几 ...
- 样式布局分享-基于frozen.js的移动OA
最近改造了公司移动OA的样式,改善了显示效果和用户体验,其中用到了腾讯的 frozen.js 框架,在此把布局代码分享给大家,希望大家可以用得上,具体效果如下图. Demo 百度网盘 下载地址 Git ...
- 什么是HTTP Keep-Alive呢?
在通过调试工具查看网络请求的时候,通常在response header能看到类似下面这种:Keep-Alive: timeout=10, max=94 .那么Keep-Alive到底是什么呢? HTT ...
- UVA 1599 Ideal Path
题意: 给出n和m,n代表有n个城市.接下来m行,分别给出a,b,c.代表a与b之间有一条颜色为c的道路.求最少走几条道路才能从1走到n.输出要走的道路数和颜色.保证颜色的字典序最小. 分析: bfs ...
- CalendarHelper日期计算工具,各种日期的获取和计算
今天分享一个日期获取和计算的工具类,这个最初是用在项目中获取每周每月日期用的. <Attention> 之后逛帖子的时候发现了这个专门处理日期的库,java上也有,android上还为了避 ...
- c++的getline()和get()函数
这两个函数都是面向行的输入: getline()函数读取整行,它使用通过回车符来确定输入结尾.要调用这种方法,可以使用cin.getline().该函数有两个参数, 第一个参数用来存储输入行的数组的名 ...
- MySQL取得当前时间的函数是什么 格式化日期的函数是什么
取得当前时间用 now() 就行.在数据库中格式化时间 用DATE_FORMA T(date, format) .根据格式串format 格式化日期或日期和时间值date,返回结果串. 可用DATE_ ...
- 关于使用HttpSessionBindingListener获取在线用户数,同一用户登陆一次
原创地址:http://blog.csdn.net/jiaoxueli/article/details/2226134 考虑到项目中统计在线用户数量和同一用户只能登陆一次的需求,查询联系 HttpSe ...