【发布时间】:2011-05-25 06:05:36
【问题描述】:
哪个更快 -
val = val*10;
或
val = (val<<3) + (val<<2);
与移位指令相比,imul 需要多少个时钟周期?
【问题讨论】:
-
之前也有人问过类似的问题——最终结果是:“查看制造商提供的说明文档”(这会因型号而异)和“它很复杂”(现代超标量输出-有序流水线 CPU 不能像“传统”微处理器那样简单计算)。
-
至少包括目标 CPU model。这可能实际上会导致一些有趣的事情。
-
让编译器担心它的更多理由:以标准方式编写它更具可读性(对人类而言),并且编译器更有可能为手头的架构做正确的事情。
-
这个我说的还不够:测量它!并查找您的 CPU 文档。
-
您正在用 C 语言编写,但谈论的是 asm。在启用优化的情况下进行编译,您会看到编译器会为您执行此操作。
标签: assembly optimization x86