IsNullOrEmpty和s == null || s.Length == 0哪个快

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

我测试了一个,发现结果相反:
第一次:
方法:(String.IsNullOrEmpty( s )): 用时=00:00:02.3015335 进入次数=50000000 
方法:(s == null || s.Length == 0): 用时=00:00:02.6747835 进入次数=50000000
第二次:
方法:(String.IsNullOrEmpty( s )): 用时=00:00:02.3115417 进入次数=50000000 
方法:(s == null || s.Length == 0): 用时=00:00:02.6607726 进入次数=50000000
第三次:
方法:(String.IsNullOrEmpty( s )): 用时=00:00:02.3205477 进入次数=50000000 
方法:(s == null || s.Length == 0): 用时=00:00:02.6607744 进入次数=50000000

第N次:
方法:(String.IsNullOrEmpty( s )): 用时=00:00:02.2965310 进入次数=50000000 
方法:(s == null || s.Length == 0): 用时=00:00:02.6797865 进入次数=50000000

我实现的测试和楼主的刚好相反了。
我的环境:
win8  64位
8G内存

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

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

方法:(String.IsNullOrEmpty( s )): 用时=00:00:00.3462293 进入次数=50000000
方法:(s == null || s.Length == 0): 用时=00:00:00.2911963 进入次数=50000000

方法:(String.IsNullOrEmpty( s )): 用时=00:00:00.3442286 进入次数=50000000
方法:(s == null || s.Length == 0): 用时=00:00:00.3172130 进入次数=50000000

方法:(String.IsNullOrEmpty( s )): 用时=00:00:00.3452307 进入次数=50000000
方法:(s == null || s.Length == 0): 用时=00:00:00.2911941 进入次数=50000000


方法:(String.IsNullOrEmpty( s )): 用时=00:00:00.3462308 进入次数=50000000
方法:(s == null || s.Length == 0): 用时=00:00:00.2921954 进入次数=50000000

方法:(String.IsNullOrEmpty( s )): 用时=00:00:00.3452311 进入次数=50000000
方法:(s == null || s.Length == 0): 用时=00:00:00.2931936 进入次数=50000000

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

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

原文地址:https://www.cnblogs.com/qiywtc/p/4551964.html