C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++プログラムのi++と++iの間にパフォーマンスの違いはありますか?


i++と++iの効果的な結果は同じです。唯一の違いは、i ++は割り当て後にiの値を増やし、++ iの場合、最初に値を増やしてからその値を割り当てることです。次のコードで違いがわかります。

サンプルコード

#include<iostream>
using namespace std;
int main() {
   int x = 3, y, z;
   y = x++;
   z = ++x;
   cout << x << ", " << y << ", " << z;
   return 0;
}

出力

5, 3, 5

さて、問題は、彼らが同じタスクを実行しているが順序が異なるため、パフォーマンスの問題があるのか​​、それとも両方が同じであるのかということです。

これらの操作のパフォーマンスは、基盤となるアーキテクチャに大きく依存します。 1つは、メモリに保存されている値をインクリメントすることです。これは、フォンノイマンボトルネックが基本的に両方の場合の制限要因であることを意味します。

++iはi++よりわずかに速いと言えますが。 i ++は、インクリメントする前にiの値のローカルコピーを取得しますが、++iは取得しません。可能であれば、一部のコンパイラがコードを最適化する場合があります。しかし、その最適化が常に効果的であるとは限りません。または、すべてのコンパイラがこのことを行うわけではありません。


  1. C ++のプレフィックス演算子とポストフィックス演算子の違いは何ですか?

    プレフィックスバージョン(つまり、++ i)では、iの値がインクリメントされ、式の値はiの新しい値になります。したがって、基本的には、最初にインクリメントしてから、式に値を割り当てます。 postfixバージョン(つまり、i ++)では、iの値は増分されますが、式の{value|worth}はiの元の値です。したがって、基本的には、最初に式に値を割り当ててから、変数をインクリメントします。 理解を深めるためにいくつかのコードを見てみましょう- 例 #include<iostream> using namespace std; int main() {    

  2. C++の++iとi++の違いは何ですか?

    ++のサフィックスバージョンとプレフィックスバージョンには大きな違いがあります。 プレフィックスバージョン(つまり、++ i)では、iの値がインクリメントされ、式の値はiの新しい値になります。したがって、基本的には、最初にインクリメントしてから、式に値を割り当てます。 postfixバージョン(つまり、i ++)では、iの値はインクリメントされますが、式の値はiの元の値です。したがって、基本的には、最初に式に値を割り当ててから、変数をインクリメントします。 例 理解を深めるために、いくつかのコードを見てみましょう- #include<iostream> using name