gpt4 book ai didi

c - C 与汇编程序的效率

转载 作者:太空狗 更新时间:2023-10-29 15:09:21 26 4
gpt4 key购买 nike

下面的汇编代码有多快:

shl ax, 1

与以下 C 代码相比:

num = num * 2;

我怎么才能知道?

最佳答案

您的 assembly 变体可能更快,也可能更慢。是什么让您认为它一定更快?

关于x86平台,有很多方法可以将某些东西乘以 2。我希望编译器执行 add ax, ax,这在直觉上比你的 shl 更有效,因为它不涉及潜在的存储常量(在您的情况下为“1”)。

此外,很长一段时间以来,在 x86 平台上,将事物乘以常数的首选方式不是移位,而是 lea 操作(如果可能)。在上面的示例中,它将是 lea eax, [eax*2]。 (乘以 3 将通过 lea eax, [eax*2+eax] 完成)

对于新手来说,轮类操作以某种方式“更快”的信念是一个很好的老故事,在今天几乎没有任何意义。而且,和往常一样,大多数时候你的编译器(如果它是最新的)比那些天真地喜欢移位操作的人更了解底层硬件平台。

关于c - C 与汇编程序的效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1579180/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com