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