Kyl*_*ndo 4 c performance assembly
以下汇编程序代码的速度有多快:
shl ax, 1
Run Code Online (Sandbox Code Playgroud)
与以下C代码相对应:
num = num * 2;
Run Code Online (Sandbox Code Playgroud)
我怎么能找到?
AnT*_*AnT 25
您的装配变量可能更快,可能更慢.是什么让你认为它必然更快?
在x86的平台上,也有相当多的方法来乘以2,这是我所期望的编译器做的add ax, ax,这是直观更有效的比你的shl,因为它不涉及可能对存储的常量("1"你的情况) .
而且,很长一段时间,在x86平台上,用常数乘以东西的首选方法不是移位,而是lea操作(如果可能的话).在上面的例子中lea eax, [eax*2].(乘以3将完成lea eax, [eax*2+eax])
轮班操作在某种程度上"更快"的信念对于新手而言是一个很好的老故事,今天几乎没有相关性.而且,和往常一样,大多数情况下,您的编译器(如果它是最新的)对基础硬件平台的了解要远远超过对转换操作的天真热爱.
| 归档时间: |
|
| 查看次数: |
2312 次 |
| 最近记录: |