최적화의 Const 정확성
const 정확성은 코드 가독성을 높이고 오류를 줄이는 반면 성능에 미치는 영향은 대중의 믿음과는 달리 제한적입니다. .
상수에 대한 포인터 또는 상수 참조를 선언하는 것만으로는 컴파일러에 추가적인 최적화 기회가 제공되지 않습니다. const 선언은 단지 해당 범위 내에서 식별자를 사용하는 방법을 지정하지만 기본 객체가 불변임을 보장하지는 않습니다.
예:
<code class="c">int foo(const int *p) { int x = *p; bar(x); x = *p; return x; }</code>
const 선언을 사용하더라도 컴파일러는 bar()가 액세스할 수 있는 전역 정수를 가리킬 수 있으므로 p가 bar()에 의해 변경되지 않은 상태로 유지된다고 가정할 수 없습니다. 컴파일러가 foo() 및 bar()에 대한 충분한 지식을 보유하고 bar()가 p를 수정하지 않는다는 것을 증명할 수 있는 경우 이러한 최적화는 const 없이도 달성할 수 있습니다.
마찬가지로 const 선언 자체 호출자 함수 최적화를 지원하지 마십시오.
<code class="c">int x = 37; foo(&x); printf("%d\n", x);</code>
Foo()는 x를 수정할 수 있으므로 컴파일러가 const만으로 최적화하는 것이 불가능합니다.
const의 주요 이점은 다음과 같습니다. 최적화보다는 오류 방지. 범위 내에서 식별자가 활용되는 방식을 제한하지만 이미 확인할 수 없는 내용은 컴파일러에 알리지 않습니다.
포인터 대 참조
포인터와 참조는 비슷한 메모리 내 표현을 가지고 있습니다. 포인터는 변수의 주소를 저장하는 반면 참조는 별칭 역할을 하여 기본 개체에 대한 직접 액세스를 제공합니다. 또한 포인터는 NULL이 될 수 있지만 참조는 NULL이 될 수 없습니다.
위 내용은 Const-Corrightness가 최적화 성능을 향상합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!