developer tip

/ Ox 및 / O2 컴파일러 옵션의 차이점은 무엇입니까?

copycodes 2020. 11. 21. 10:30
반응형

/ Ox 및 / O2 컴파일러 옵션의 차이점은 무엇입니까?


Microsoft의 C ++ 컴파일러 ( cl.exe, Visual Studio에 포함됨)는 여러 최적화 스위치를 제공 합니다 . 그들 대부분의 차이는 자명 해 보이지만 /O2(최대 속도를 위해 코드를 최적화하는)와 /Ox( "전체 최적화"를 선택하는 ) 의 차이점이 무엇인지는 분명하지 않습니다 .

옵션에 대한 문서읽으려고했는데이 /Ox스위치가 크기가 아닌 최대 속도에 대한 최적화도 가능하게한다는 것을 확인한 것 같습니다.

/Ox컴파일러 옵션은 작은 크기를 통해 실행 속도를 선호 코드를 생성합니다.

그러나 특히 "비고"섹션 아래에있는 다음 진술이 눈에 띄었습니다.

일반적으로 /O2대신 (속도 최대화)를 지정 /Ox합니다.

내 질문은 그래서, 왜 하나는 일반적으로 선호합니다 /O2이상 /Ox? 후자의 옵션을 사용하면 예기치 않은 버그 또는 예상치 못한 동작을 유발하는 것으로 알려진 특정 최적화가 가능합니까? 얻을 수있는 최적화의 양이 추가 컴파일 시간의 가치가 없다는 것이 단순히 있습니까? 아니면 이것이 VS /O2기본 옵션 이라는 사실로 인한 완전히 의미없는 "권장 사항" 일까요?


Asha의 답변 은 Visual Studio 2005에 대한 블로그 게시물을 인용하며 다소 구식입니다.

최신 버전의 문서는 여기에서 사용할 수 있습니다.

그들에 따르면 :

또한 /GS-스택 주변의 보안 검사를 끄는 방법에 관심 이있을 수 있습니다. 이는 상당한 성능 저하가 될 수 있습니다 ( / GS에 대한 MS 문서 참조 ).

언제나처럼 특정 애플리케이션을 벤치마킹해야합니다.


여기 에서 찾았습니다 .

Ox와 O2는 거의 동일합니다. 그들은 O2도 GFGy를 던진다는 점에서만 다릅니다 . 이 두 스위치를 던지는 것을 피할 이유가 거의 없습니다.

참고 URL : https://stackoverflow.com/questions/5063334/what-is-the-difference-between-the-ox-and-o2-compiler-options

반응형