C++程式中,i++和++i的效能是否有所差異?


i++和++i的效果相同。唯一差別在於i++先對i進行賦值,再對i進行加1,而++i則是先對i加1,再對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

現在的問題是,既然兩個函式執行相同的任務,但是執行順序不同,那麼是否會存在效能問題,或者兩者是一樣的?

嗯,這兩個操作的效能很大程度上取決於底層架構。其中一個是對儲存在記憶體中的值進行自增,這意味著馮·諾依曼瓶頸基本上是兩種情況的限制因素。

不過我們可以說++i比i++略快。在進行自增之前,i++會取得i的一個區域性副本,而++i則不會。有時,如果可能,一些編譯器會最佳化程式碼。但這種最佳化並不總是有效的,或者並非所有編譯器都會這樣做。

更新於: 30-07-2019

超過2K個瀏覽

開啟你的 職業生涯

完成課程,獲得認證

開始學習
Advertisement