C에서 명령문 순서 시행
질문:
어떻게 하면 최적화가 적용된 경우에도 C 코드의 명령문 활성화되어 있습니까?
답변:
일반적인 가정에도 불구하고 C는 본질적으로 특히 최적화 하에서 명령문 순서를 강제하지 않습니다. 특정 문은 최적화된 코드에서 잘못된 순서로 나타날 수 있으며, 이는 시간에 민감한 작업과 같은 시나리오에서 문제가 될 수 있습니다.
해결책:
기본적으로 연산 조작 엄격한 순서를 달성하기 위한 추가와 같은 기본 작업의 의미는 실현 가능하지 않습니다. 컴파일러 및 하드웨어 설계 최적화는 이러한 작업에 관찰 가능한 타이밍 속성이 없다는 가정을 전제로 합니다.
그러나 마이크로 벤치마킹을 위한 효과적인 기술이 등장했습니다.
불투명 데이터 조작 :
라이브러리 지원:
template <class T> __attribute__((always_inline)) inline void DoNotOptimize(const T &value) { asm volatile("" : "+m"(const_cast<T &&>(value))); }
컴파일러 지시어:
참고:
C 표준 위원회에서 탐색 중입니다. DoNotOptimize와 같은 API 표준화를 통해 명령문 순서 적용을 더욱 용이하게 합니다.
위 내용은 최적화된 C 코드에서 명령문 재정렬을 방지하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!