考虑以下两个 cpu 操作:
总和 = 1 + 1 + 1 + 1 + 1 + 1+ 1+......n 次
和 = 1 * n
现在我想知道天气这两个操作在复杂性和 cpu 时间方面是不同的。我也可以将这些视为原子操作吗?
考虑以下两个 cpu 操作:
总和 = 1 + 1 + 1 + 1 + 1 + 1+ 1+......n 次
和 = 1 * n
现在我想知道天气这两个操作在复杂性和 cpu 时间方面是不同的。我也可以将这些视为原子操作吗?
ADD 和 MUL 是不同的操作。
在第一个语句中,您有 N ADD 操作 -> 许多 cicles。
在第二个你有一个操作 - >几个周期。
但是,这取决于编译器将如何执行这些语句。(编译器可能会在编译时将 1+1+1+...+1 替换为 N,因此可执行文件将执行一次操作。但在这种情况下编译器将执行 N 次操作。)
更新:存在 MUL 操作:http ://en.wikipedia.org/wiki/X86_instruction_listings
在 x86 上,ADD 执行聚合只需不到一个周期,MUL 大约需要 2.7 个周期。
编译器中的优化器非常聪明。如果你正在做一个乘法,它可以使用移位做得更快,并添加它。
编写代码以尽可能简单的方式说明您在做什么,编译器和处理器将通过为您提供快速代码来奖励您。