Computer >> Máy Tính >  >> Lập trình >> C ++

Có sự khác biệt về hiệu suất giữa i ++ và ++ i trong chương trình C ++ không?

Kết quả hiệu quả của i ++ và ++ i là như nhau. Sự khác biệt duy nhất là i ++ tăng giá trị của i sau khi gán nó, và đối với ++ i, nó tăng giá trị trước rồi mới gán giá trị của nó. Chúng ta có thể thấy sự khác biệt trong đoạn mã sau.

Mã mẫu

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

Đầu ra

5, 3, 5

Bây giờ, câu hỏi được đặt ra, rằng khi họ đang thực hiện cùng một nhiệm vụ nhưng theo thứ tự khác nhau, thì liệu có vấn đề gì về hiệu suất hay cả hai đều giống nhau?

Chà, hiệu suất của các hoạt động này phụ thuộc nhiều vào kiến ​​trúc bên dưới. Một là giá trị gia tăng được lưu trữ trong bộ nhớ, điều đó có nghĩa là nút cổ chai Von-Neumann về cơ bản là yếu tố hạn chế trong cả hai trường hợp.

Mặc dù chúng ta có thể nói rằng ++ i nhanh hơn một chút so với i ++. I ++ nhận bản sao cục bộ của giá trị i trước khi tăng dần, trong khi ++ tôi không bao giờ làm như vậy. Đôi khi một số trình biên dịch tối ưu hóa mã nếu có thể. Nhưng không phải lúc nào việc tối ưu hóa đó cũng hiệu quả, hoặc không phải tất cả các trình biên dịch đều làm được điều này.