답변:
-O3
몇 가지 단점이 있습니다.
-O2
또는 보다 더 느린 코드를 생성합니다 -Os
. 때로는 루프 언 롤링으로 인해 더 긴 코드를 생성하는데, 이는 코드의 캐시 성능 저하로 인해 실제로 느려질 수 있습니다.-O3
.-O3
플래그는 컨텍스트 전환 비용이나 I / O 속도를 변경 하지 않습니다 . 전체 성능의 <0.1 % 속도 향상과 같은 것이 가치가 있다고 생각하지 않습니다.지난 10 년 동안 저는 -O3 -march=native
전 세계적으로 1000 개 이상의 패키지를 사용하여 여러 젠투 시스템을 운영해 왔지만 아직까지도 이러한 신화적인 안정성 문제 -O3
는 발생하지 않았습니다 . 수학 / 과학 응용 프로그램과 같은 CPU 집약적 응용 프로그램의 벤치 마크는 -O3
더 빠른 코드를 생성하는 것을 지속적으로 보여줍니다 . 그렇지 않으면 의미가 없습니다. 대부분의 데스크톱 응용 프로그램 CFLAGS
은 IO 바인딩이기 때문에 중요하지 않지만 CPU 바인딩 된 서버 쪽 작업에는 중요합니다.
대부분의 응용 프로그램에서 -O3 및 기타 최적화 노브를 사용하여 벗어날 수 있지만 속도가 향상 될 수 있지만 커널 자체 또는 빌드에 필요한 도구 체인 (컴파일러, binutils, 기타.).
생각해보십시오 : 시스템 충돌 또는 잠재적 인 데이터 손실 및 / 또는 손상 가치가있는 raid 및 ext3 하위 시스템의 5 % 성능 향상입니까?
재생중인 해당 Quake 포트 또는 DVD 모음을 divx 파일로 리핑하는 데 사용하는 오디오 / 비디오 코덱에 대해 원하는 모든 노브를 조정하십시오. 당신은 아마 개선을 볼 수 있습니다. 낭비 할 시간이없고 손실 할 수있는 데이터가 없다면 커널을 망칠 필요가 없습니다.
-O0
도 전혀 지원되지 않습니다! stackoverflow.com/questions/29151235/…