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

이제 동일한 작업을 수행하지만 다른 순서로 수행하므로 성능 문제가 있는 것인지 아니면 둘 다 동일한 것인지에 대한 질문이 나옵니다.

음, 이러한 작업의 성능은 기본 아키텍처에 크게 의존합니다. 하나는 메모리에 저장된 값을 증가시키는 것입니다. 이는 Von-Neumann 병목 현상이 기본적으로 두 경우 모두에서 제한 요소임을 의미합니다.

++i가 i++보다 약간 더 빠릅니다. i++는 증가하기 전에 i 값의 로컬 복사본을 사용하지만 ++i는 절대 그렇지 않습니다. 때때로 일부 컴파일러는 가능한 경우 코드를 최적화합니다. 그러나 그 최적화가 항상 효과적인 것은 아니며 모든 컴파일러가 이 작업을 수행하는 것은 아닙니다.