if(value == null)vs if(null == value)

时间:2011-11-08 10:26:47

标签: c# php javascript

  

可能重复:
  Why does one often see “null != variable” instead of “variable != null” in C#?

这更像是一个好奇心问题,声明之间是否有任何性能差异。

 if(value == null)

 if(null == value)

是否引人注目,我使用c#,PHP& javascript经常和我记得有人说如果(null == value)更快,但它真的吗?

我将很快开始开发一个应用程序,该应用程序将解析太字节区域中的大量数据,因此即使性能增益在毫秒范围内,也会产生影响。有人有什么想法吗?

7 个答案:

答案 0 :(得分:20)

我怀疑无论哪种方式都有可衡量的性能优势。我敢打赌告诉你的人没有任何硬数据。

据我所知,这是一个历史文物,一种来自C和C ++的技术来防范这个错误:

if (c = null) {
}

如果您反转参数,编译器将捕获此信息,因为您无法将某些内容赋值为null。

答案 1 :(得分:5)

预计完全没有性能差异。

使用(丑陋)形式(if null == value)的唯一原因是避免C / C ++特定的拼写错误:

if (value = null)  // compiles but _assigns_ null to value and always returns false
    ...  // never executed

答案 2 :(得分:5)

我分析了超过1亿次迭代。

  

if(value == null)
   - 6.85175704956秒(每个68.5纳秒)
  if(null == value)
   - 6.75543808937秒(每个67.5纳秒)

如果1纳秒足以获得收益,那么由你决定。

答案 3 :(得分:4)

我认为期望没有区别是公平的:它是如此简单的情况,如果存在差异,编译器将确保生成最快的版本。

答案 4 :(得分:1)

这样的优化最多可以获得一个时钟周期(虽然我不知道为什么)。但最有可能的是,如果它更好,那么编译器会为你优化它。

首先放置任何文字(例如null)的原因是,如果您执行=而不是==,则无法意外分配值。我个人确实发现它的可读性较差。

答案 5 :(得分:1)

是的我也认为没有区别,但我个人更喜欢if(value == null)

答案 6 :(得分:0)

我不确定它是否更快或者某些语言​​允许您在if语句中进行分配而不会发出警告,如果您这样做:

if (value = null)错误地你可以擦除你的变量,而反过来不会在执行路径上进一步引起奇怪的问题。