一元运算符和二进制运算符之间的性能差异

时间:2019-01-11 18:39:59

标签: c++ operators

name=valuefor i in range(10)之间实际上存在性能差异,其中-foo是类型(-1)*foo的变量吗? 理论上,一元运算符应该更快。但是我认为编译器会对此进行优化。

1 个答案:

答案 0 :(得分:2)

  

-foo(-1)*foo之间确实存在性能差异

理论上可以。 C ++标准不能保证任何一种方式。

但是,假设foo的类型是整数,则这些表达式的可观察行为之间绝对没有区别。因此,在这种情况下,允许编译器为每个表达式生成相同的二进制程序。理想的优化程序应生成性能更好的程序。

您的真实编译器是否为两个程序生成相同的输出是另一回事-没有真正的编译器是理想的。您可以通过使用两个替代程序的编译器,然后比较输出来找出答案。