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 问 ...
随机推荐
- HDU2084 数塔 (DP入门题)
数塔 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...
- 使用ObjectAnimator开发打开、关闭书本动画
动画效果 动画效果-分享链接 (想做成gif图的,尝试各种工具无果) ObjectAnimator简单介绍及实现思路 ObjectAnimator是从api level 11 (Android3.0x ...
- 搭建PhoneCat项目的开发与测试环境
AngularJS官方网站提供了一个用于学习的示例项目:PhoneCat.这是一个Web应用,用户可以浏览一些Android手机,了解它们的详细信息,并进行搜索和排序操作. 获取源代码 PhoneCa ...
- 不管ACM是不是屠龙之技
有一个目标,每天早上起床能让你保持斗志满满..找到自己的战场和归属. 这件事本身就是很难得的...是不是 ACM 并不重要. 你现在能从其他事情上获得这种体验么? -xiaodao
- HTML——CSS样式表&布局页面
CSS样式表: 一.作用:美化网页,页面布局. 二.分类: 内联,写在body里标签style=""里面的样式,优点是控制精确,可重用性差. 内嵌,嵌在网页的head里面,可重用性 ...
- [Poco库]使用经验
1. Link错误 在Windows平台下使用时link报错 "CreateProcess is not defined"的解决GetEnvironmentVariable / S ...
- 关于各种数据库 Insert时同时取到Id的操作
对数据库的操作,在Insert的同时获取到Id,保证原子性操作.而不是,先取Id,然后再插入到数据库等操作. Oracle: 使用Oracle自带的 Returning into 语句,具体代码示例如 ...
- 使用md5判断网站内容是否被篡改
该脚本比较简单,判断网站根目录是否被篡改,如果被篡改把篡改的文件发送到管理员邮箱 #!/bin/bash #author:luodi date:// #use md5 to check web sit ...
- 利用js闭包获取索引号
以tab选项卡效果为例: 网页中的选项卡效果
- java Timer 使用小结
Java自带的java.util.Timer类,通过调度一个java.util.TimerTask任务.这种方式可以让程序按照某一个频度执行,但不能指定时间运行.用的较少. 任务的调用通过起的子线程进 ...