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

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


ผลลัพธ์ที่มีประสิทธิภาพของ 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

ตอนนี้ คำถามมาถึงว่า ขณะที่พวกเขากำลังทำงานเดียวกันแต่ในลำดับที่ต่างกัน มีปัญหาด้านประสิทธิภาพหรือทั้งสองอย่างเหมือนกันไหม

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

แม้ว่าเราสามารถพูดได้ว่า ++i นั้นเร็วกว่า i++ เล็กน้อย i++ จะใช้สำเนาของค่า i ก่อนที่จะเพิ่มขึ้นในขณะที่ ++i จะไม่ทำ บางครั้งคอมไพเลอร์บางตัวปรับโค้ดให้เหมาะสมถ้าเป็นไปได้ แต่การเพิ่มประสิทธิภาพนั้นไม่ได้ผลเสมอไป หรือไม่ใช่ว่าคอมไพเลอร์ทั้งหมดจะทำสิ่งนี้