一元运算符和二元运算符之间的性能差异
Performance difference between unary and binary operator
-foo
和 (-1)*foo
之间是否真的存在性能差异,其中 foo
是类型 int
的变量?
理论上,一元运算符应该更快。但我认为编译器会优化它。
Is there actually a performance difference between -foo
and (-1)*foo
理论上是可以的。 C++ 标准不保证任何一种方式。
但是,假设 foo
的类型是整数,那么这些表达式的可观察行为之间绝对没有区别。因此,在这种情况下,允许编译器为任一表达式生成相同的二进制程序。一个理想的优化器应该生成性能更好的程序。
您的真实编译器是否为两个程序生成相同的输出是另一回事 - 没有一个真实的编译器是理想的。您可以通过对两个替代程序使用编译器然后比较输出来找出答案。
-foo
和 (-1)*foo
之间是否真的存在性能差异,其中 foo
是类型 int
的变量?
理论上,一元运算符应该更快。但我认为编译器会优化它。
Is there actually a performance difference between
-foo
and(-1)*foo
理论上是可以的。 C++ 标准不保证任何一种方式。
但是,假设 foo
的类型是整数,那么这些表达式的可观察行为之间绝对没有区别。因此,在这种情况下,允许编译器为任一表达式生成相同的二进制程序。一个理想的优化器应该生成性能更好的程序。
您的真实编译器是否为两个程序生成相同的输出是另一回事 - 没有一个真实的编译器是理想的。您可以通过对两个替代程序使用编译器然后比较输出来找出答案。