0

考虑以下两个 cpu 操作:

总和 = 1 + 1 + 1 + 1 + 1 + 1+ 1+......n 次

和 = 1 * n

现在我想知道天气这两个操作在复杂性和 cpu 时间方面是不同的。我也可以将这些视为原子操作吗?

4

2 回答 2

0

ADD 和 MUL 是不同的操作。

在第一个语句中,您有 N ADD 操作 -> 许多 cicles。

在第二个你有一个操作 - >几个周期。

但是,这取决于编译器将如何执行这些语句。(编译器可能会在编译时将 1+1+1+...+1 替换为 N,因此可执行文件将执行一次操作。但在这种情况下编译器将执行 N 次操作。)

更新:存在 MUL 操作:http ://en.wikipedia.org/wiki/X86_instruction_listings

于 2012-05-10T06:29:21.167 回答
0

在 x86 上,ADD 执行聚合只需不到一个周期,MUL 大约需要 2.7 个周期。

编译器中的优化器非常聪明。如果你正在做一个乘法,它可以使用移位做得更快,并添加它。

编写代码以尽可能简单的方式说明您在做什么,编译器和处理器将通过为您提供快速代码来奖励您。

于 2012-05-10T09:05:16.607 回答