【发布时间】:2016-01-28 14:01:16
【问题描述】:
好的,所以在编写一些代码时,我脑海中突然出现了一个问题。 CPU会计算这个吗
gap = (gap*3) + 1;
与下面不带括号的表达式一样的效率?
gap = gap*3 + 1;
更新更清晰:
通常在编写算术表达式时,我们倾向于添加括号以使代码更易于阅读,即使括号不会改变表达式的计算结果。那么问题来了,添加这样的括号对性能有影响吗?
【问题讨论】:
-
看看运算符优先级/操作顺序 - 在您的示例中,乘法无论如何都会先行。 CPU 不会像您发布的那样直接执行表达式,而是执行指令。这取决于编译器将源代码翻译成什么。无论如何,括号会我“删除”。对于您的示例,应该没有任何区别(尝试并编译)。根据您的架构,这甚至可以在一条指令中完成(乘法、加法)。
-
谢谢。我更新了问题以更好地解释它。
-
在您的示例中,两种计算的结果是相同的。为获得这些结果而执行的计算(执行的指令)是相同的,因此性能相同。数据依赖没有改变。
-
好吧,我可能出乎意料地不对(在你的例子上测试它)!欢迎其他cmets。
-
我将您的程序编写为 C 代码,并比较了汇编代码和二进制程序。它仅因文件名而异,如果您愿意,我可以添加代码作为答案。但我不确定这是否对你很有帮助。
标签: arithmetic-expressions processing-efficiency