質問がありますC ではi++
との間にパフォーマンスの違いはありますか?++i
C++ の答えは何ですか?
ベストアンサー1
[エグゼクティブ サマリー:++i
を使用する特別な理由がない場合に使用しますi++
。]
C++ の場合、答えは少し複雑になります。
i
が単純型(C++クラスのインスタンスではない)の場合、C の答えは「いいえ、パフォーマンスの違いはありません」です。コンパイラがコードを生成しているため、これは当てはまります。
ただし、 がi
C++ クラスのインスタンスである場合、 とi++
は関数++i
の 1 つを呼び出しますoperator++
。これらの関数の標準的なペアを次に示します。
Foo& Foo::operator++() // called for ++i
{
this->data += 1;
return *this;
}
Foo Foo::operator++(int ignored_dummy_value) // called for i++
{
Foo tmp(*this); // variable "tmp" cannot be optimized away by the compiler
++(*this);
return tmp;
}
コンパイラはコードを生成しているのではなく、operator++
関数を呼び出しているだけなので、変数とそれに関連するコピー コンストラクターを最適化する方法はありませんtmp
。コピー コンストラクターのコストが高い場合、パフォーマンスに大きな影響を与える可能性があります。