这些cpu操作是否相同?

时间:2012-05-10 06:25:34

标签: performance cpu complexity-theory atomic cpu-cycles

考虑以下两个cpu操作:

sum = 1 + 1 + 1 + 1 + 1 + 1 + 1 + ...... n次

和 sum = 1 * n

现在我想知道这两个操作的天气在复杂性和CPU时间方面有所不同。 我还可以将它们视为原子操作吗?

2 个答案:

答案 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个周期。

编译器中的优化器非常智能。如果你正在进行乘法运算,它可以使用班次更快地完成,并添加它。

编写代码,以最简单的方式说出您正在做的事情,编译器和处理器将通过为您提供快速代码来奖励您。