if(value == null) vs if(null == value)
本文关键字:null if value vs | 更新日期: 2023-09-27 18:14:01
可能重复:
为什么人们经常看到;null!=变量”而不是“变量!=null";在C#中?
这更多是一个令人好奇的问题,这两种说法之间是否存在性能差异。
if(value == null)
和
if(null == value)
值得注意的是,我使用了c#、PHP&javascript经常出现,我记得有人说if(null==value(更快,但真的吗?
我很快将开始开发一个应用程序,该应用程序将解析万亿字节范围内的大量数据,因此即使性能提升在毫秒范围内,也可能产生影响。有人有什么想法吗?
无论哪种方式,我都怀疑是否存在可衡量的性能优势。我敢打赌,告诉你这件事的人没有任何硬数据。
据我所知,这是一个历史文物,是C和C++用来防止这个错误的技术:
if (c = null) {
}
如果你反转参数,编译器会发现这个问题,因为你不能给null赋值。
我介绍了这两个超过1亿次的迭代。
if(value==null(
--6.85175704956秒(每个68.5纳秒(
if(null==value(
--6.75543808937秒(每个67.5纳秒(
因此,1纳秒是否足够增益取决于你。
绝对没有预期的性能差异。
使用(丑陋的(形式(if null == value)
的唯一原因是为了避免C/C++特定的打字错误:
if (value = null) // compiles but _assigns_ null to value and always returns false
... // never executed
我认为可以公平地预期不会有任何差异:这是一个非常简单的情况,如果有差异,编译器无论如何都会确保生成最快的版本。
是的,我也认为不会有什么不同,但我个人更喜欢if(value == null)
这样的优化最多只会给你一个时钟周期(我不知道为什么(。但最有可能的是,如果它更好,那么编译器会为您优化它。
将任何文字(如null
(放在第一位的原因是,如果使用=
而不是==
,则不会意外地分配值。不过,我个人确实觉得它可读性较差。
我不确定它是否更快,但有些语言允许您在if语句中赋值,而不会发出警告,所以如果您这样做:
if (value = null)
错误地可以擦除变量,而另一种方法不会在执行路径上进一步引发奇怪的问题。