i = i + 1 和 ++i 之间的速度比较

Speed comparison between i = i + 1 and ++i

对于 C++11,i = i + 1 是否比 ++i 快? I hear 对于 类,++ii++ 快,但对于简单类型则不然。 i = i + 1和这两个有类似的比较吗?
谢谢!

编辑 1:我使用 g++,但我很高兴知道它在其他编译器上的工作原理。
编辑 2:这个问题与 this one 不同,因为它专门询问 i = i + 1,而不是仅仅谈论 ++ii++.

之间的区别

编辑 3:(TonyD - 由 QuantumFool 语法编辑)问题的 i = i + 1 方面与 this

重复

除了你使用的编译器,还取决于你使用的优化设置。想知道就反汇编看具体编译器+优化设置的编译结果。

然而至少有一些事情大部分是正确的:

  1. i++不会比i = i+1
  2. ++i 不会比 i++ 慢,如果你只做递增的话。
  3. 如果可能,即使对于简单类型,也总是首选写 ++i。不是因为性能,而是为了建立一个良好的实践,这样你在对一个对象做 ++ 时就不需要三思而后行了。
  1. 如果类型不是class,像int之类的,都差不多
  2. 如果类型是class,++i比i++快,因为++ireturns左值,i++returns右值;

  class A{
        private:
           int i;
        public:
           A( int k =0): i(k){}
           A operator++(){  // i++
              A temp=*this;  // need create a new object
              i++;
              return temp;
        }
           A & operator++(int){ // ++i
               i++;
               return *this;
        }
        };