在写扩展方法时,看到有人用==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