哪种编码方法更好,我确定这取决于在计算机级别上发生的情况。
我应该做
if (x == 0)
要么
if (!x)
最佳编码实践将取决于您想做什么。如果要检查整数x
是否等于0,请使用x==0
。如果要检查布尔值x
是否不正确,请使用!x
。
如果您正在寻找最理想的代码:两者都同样快。这两个语句执行相同的操作。他们检查是否设置了标志。编译器应该知道您正在尝试做同样的事情,从而产生相同或非常相似的输出。特别是经过优化后,性能应该没有任何区别。
在x86
处理器中,这些通常是通过cmp
操作和条件跳转来完成的。它们分别比较两个“变量”或更正确的寄存器,并根据结果进行条件跳转(例如x为0)。
除非您的编译器“递减”,否则无论处理器类型如何,它都应产生相同的代码(假定这两个条件实际上在您的语言中表示相同)。
我还想补充一点,在弱类型语言中,尤其是在解释(例如PHP)时,可能会有一些开销。在这种情况下,取决于x
是布尔值还是整数。不过,也可以将它们优化,并且无论如何都最好具有可读性。您将获得的任何性能提升都是微不足道的,而可读性则更为重要。例如,!x
可能会使人们误以为x
是布尔值,而实际上却是整数。
知道这些差异是很有趣的,但是,即使它存在,性能提高也很小。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句