Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

มีความแตกต่างด้านประสิทธิภาพระหว่าง i++ และ ++i ใน C++ หรือไม่?

บทนำ

ผลลัพธ์ของ 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

ประสิทธิภาพ

ประสิทธิภาพขึ้นอยู่กับสถาปัตยกรรมพื้นฐาน ทั้งคู่เพิ่มค่าที่เก็บในหน่วยความจำ Von-Neumann bottleneck เป็นปัจจัยจำกัด

อย่างไรก็ตาม ++i เร็วกว่า i++ นิดหน่อย เพราะ i++ ต้อง copy ค่าก่อนเพิ่ม ในขณะที่ ++i ไม่ต้อง copy บางคอมไพเลอร์อาจ optimize ได้ แต่ไม่ได้มีประสิทธิภาพเสมอไป