对于计算机来说,这样做速度更快:if(x == 0)或if(!x)

用户名

哪种编码方法更好,我确定这取决于在计算机级别上发生的情况。

我应该做

if (x == 0)

要么

if (!x)
耶罗恩

最佳编码实践将取决于您想做什么。如果要检查整数x是否等于0,请使用x==0如果要检查布尔值x是否不正确,请使用!x

如果您正在寻找最理想的代码:两者都同样快。这两个语句执行相同的操作。他们检查是否设置了标志。编译器应该知道您正在尝试做同样的事情,从而产生相同或非常相似的输出。特别是经过优化后,性能应该没有任何区别。

x86处理器中,这些通常是通过cmp操作和条件跳转来完成的。它们分别比较两个“变量”或更正确的寄存器,并根据结果进行条件跳转(例如x为0)。

除非您的编译器“递减”,否则无论处理器类型如何,它都应产生相同的代码(假定这两个条件实际上在您的语言中表示相同)。


我还想补充一点,在弱类型语言中,尤其是在解释(例如PHP)时,可能会有一些开销在这种情况下,取决于x是布尔值还是整数。不过,也可以将它们优化,并且无论如何都最好具有可读性。您将获得的任何性能提升都是微不足道的,而可读性则更为重要。例如,!x可能会使人们误以为x是布尔值,而实际上却是整数。

知道这些差异是很有趣的,但是,即使它存在,性能提高也很小。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果是“ if x”或“ if x!= 0”,哪个更快?

来自分类Dev

Windows无法访问\\ [其他计算机]错误代码0x80004005

来自分类Dev

计划的任务在多台计算机上失败,并显示0x1

来自分类Dev

非UEFI计算机上的Windows 8.1安装失败,错误为0x80070570

来自分类常见问题

为什么x [0]!= x [0] [0]!= x [0] [0] [0]?

来自分类Dev

有什么方法可以在多台计算机上分发x264编码作业(以提高编码速度)?

来自分类Dev

计算机无法启动-VBoxHardening.log-使用退出代码1(0x1)-(0x80004005)启动

来自分类Dev

X轴从0开始

来自分类Dev

X轴从0开始

来自分类Dev

如何告诉超级计算机上的C ++编译器我的R包需要C ++ 0x?

来自分类Dev

无法访问Windows网络上的计算机(0x80070035找不到网络路径)

来自分类Dev

Sleep(x)使计算机进入睡眠状态

来自分类Dev

来自远程计算机的X隧道问题

来自分类Dev

连接到HDMI电视x RGB电视的计算机

来自分类常见问题

为什么a = [0]的list(x for a中的x)比a = []更快?

来自分类Dev

“ this.x = x <0?0:x; this.y = y <0?0:y”是什么?意思是?

来自分类Dev

awk如果0除以x输出0

来自分类Dev

为什么 x^(-1/0) = 0

来自分类Dev

“ x = x || 0”的目的是什么?

来自分类Dev

条件检查:if(x == 0)vs.if(!x)

来自分类Dev

为什么是-0.x ^ 0.x -nan(ind)

来自分类Dev

使用x11从远程(MacOS)计算机在本地(Linux)计算机上使用GUI程序吗?

来自分类Dev

阅读语句“if (x[i][0])”。

来自分类Dev

X[:,0] 在 matplotlib 散点图中

来自分类Dev

引导错误:Emask 0X0 SAct 0X0 SErr 0X0操作0X6被冻结

来自分类Dev

'x = y = 0','x = 0;有什么区别?y = 0;”和“ int x = 0; int y = 0;' 关于执行?

来自分类Dev

MySQL是否将WHERE x> = 0和x <= 0优化为WHERE x = 0?

来自分类Dev

迅速的UInt32 0或0x0?

来自分类Dev

UART 0x0D变为0x0A

Related 相关文章

  1. 1

    如果是“ if x”或“ if x!= 0”,哪个更快?

  2. 2

    Windows无法访问\\ [其他计算机]错误代码0x80004005

  3. 3

    计划的任务在多台计算机上失败,并显示0x1

  4. 4

    非UEFI计算机上的Windows 8.1安装失败,错误为0x80070570

  5. 5

    为什么x [0]!= x [0] [0]!= x [0] [0] [0]?

  6. 6

    有什么方法可以在多台计算机上分发x264编码作业(以提高编码速度)?

  7. 7

    计算机无法启动-VBoxHardening.log-使用退出代码1(0x1)-(0x80004005)启动

  8. 8

    X轴从0开始

  9. 9

    X轴从0开始

  10. 10

    如何告诉超级计算机上的C ++编译器我的R包需要C ++ 0x?

  11. 11

    无法访问Windows网络上的计算机(0x80070035找不到网络路径)

  12. 12

    Sleep(x)使计算机进入睡眠状态

  13. 13

    来自远程计算机的X隧道问题

  14. 14

    连接到HDMI电视x RGB电视的计算机

  15. 15

    为什么a = [0]的list(x for a中的x)比a = []更快?

  16. 16

    “ this.x = x <0?0:x; this.y = y <0?0:y”是什么?意思是?

  17. 17

    awk如果0除以x输出0

  18. 18

    为什么 x^(-1/0) = 0

  19. 19

    “ x = x || 0”的目的是什么?

  20. 20

    条件检查:if(x == 0)vs.if(!x)

  21. 21

    为什么是-0.x ^ 0.x -nan(ind)

  22. 22

    使用x11从远程(MacOS)计算机在本地(Linux)计算机上使用GUI程序吗?

  23. 23

    阅读语句“if (x[i][0])”。

  24. 24

    X[:,0] 在 matplotlib 散点图中

  25. 25

    引导错误:Emask 0X0 SAct 0X0 SErr 0X0操作0X6被冻结

  26. 26

    'x = y = 0','x = 0;有什么区别?y = 0;”和“ int x = 0; int y = 0;' 关于执行?

  27. 27

    MySQL是否将WHERE x> = 0和x <= 0优化为WHERE x = 0?

  28. 28

    迅速的UInt32 0或0x0?

  29. 29

    UART 0x0D变为0x0A

热门标签

归档