更快的条件检查

19 浏览
0 Comments

更快的条件检查

已关闭。这个问题是基于个人观点的。目前不接受答案。


想要改善这个问题吗?更新问题,通过事实和引用来回答,编辑此帖子

改善这个问题

以下代码片段执行相同的逻辑(x只能是0或1)。哪一个代码片段执行得更快?

第一段代码:

if (x == 1)
{
   y = 10;
}

第二段代码:

if (x != 0)
{
   y = 10;
}

第三段代码:

if (x)
{
   y = 10;
}

admin 更改状态以发布 2023年5月23日
0
0 Comments

你可能想要进行测量,但最有可能的是它们在速度上完全相同(在机器代码级别上它们非常相似)。

0
0 Comments

这取决于架构。在许多8位微控制器上,与零进行比较只需要一条指令,而与特定数字进行比较则需要两条指令。

第一个代码将被翻译成这样:

LDAA  x
CMPA  #1
BNE   loc
...

它将把x加载到一个寄存器中,将该寄存器与1进行比较,并在相等时跳转。

第二个代码将被翻译成这样:

LDAA  x
BNE   loc

x加载到寄存器中将设置零标志,因此可以立即跳转到与零相等。这可以节省两个字节的代码内存和两个CPU周期。

您可以通过编译一个小示例为汇编语言或反汇编您的实际代码来检查这是否是您的平台上正在发生的事情。

0