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

kam*_*mui 6 javascript php c#

可能重复:
为什么在C#中经常会看到"null!= variable"而不是"variable!= null"?

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

 if(value == null)
Run Code Online (Sandbox Code Playgroud)

 if(null == value)
Run Code Online (Sandbox Code Playgroud)

是不是很明显,我经常使用c#,PHP和javascript,我记得有人说如果(null == value)更快,但它真的吗?

我将很快开始开发一个应用程序,该应用程序将解析Terabytes区域中的大量数据,因此即使性能增益在毫秒级范围内,也会产生影响.有人有主意吗?

duf*_*ymo 20

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

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

if (c = null) {
}
Run Code Online (Sandbox Code Playgroud)

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


Nie*_*sol 6

我描述了超过1亿次迭代.

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

因此,如果1纳秒足以获得增益,那么由您决定.

  • 你的测试更不利于真正的帮助.你是因为假设这样的测试可以证明什么,这显然是错误的:首先,没有理由进行分析测试是没有意义的.它将在业余用户之间创造另一种错觉,而不是别的.其次,您没有考虑测量误差.在真正的测试中,不是那么人为的.您将无法看到任何差异,因为测量误差将超过一英里的结果.无论出于什么原因,发布这样的"剖析结果"都无济于事. (9认同)

Hen*_*man 5

绝对没有预期的性能差异.

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

if (value = null)  // compiles but _assigns_ null to value and always returns false
    ...  // never executed
Run Code Online (Sandbox Code Playgroud)