크기 최적화 여부gcc -Os
오직프로그램의 바이너리 크기를 줄이시겠습니까, 아니면 런타임 메모리 사용량도 줄이시겠습니까? 내가 뭘 알 겠어정확히결과는 특정 코드에 따라 다르지만 일반적으로 메모리 사용량이 적습니까?
답변1
당연히 프로그램을 메모리에 로드해야 하므로 -Os
메모리 사용량이 줄어듭니다. 그러나 이것이 메모리 사용량에 미치는 유일한 영향입니다.
답변2
한 가지는 -Os가 더 작은 앱을 제공하려고 노력할 것이라는 점입니다.때때로실행되는 코드가 적기 때문에 실행 속도가 빨라집니다.
답변3
실제로 다음과 같은 일부 출처에 따르면젠투 위키, -Os
징후할 수 있는바이너리 공간을 줄이는 것보다 더 많은 이점이 있습니다.하지만대량으로 사용하면 문제가 발생할 수 있습니다. 큰 프로그램에서는 실질적인 이점을 볼 수 있지만 이 플래그는 일부 버그를 유발할 수 있으므로 불안정한 코드에서는 사용하지 않도록 주의해야 합니다. 따라서 불행하게도 이는 매우 큰 소프트웨어가 버그를 노출할 가능성이 더 높다는 것을 의미합니다(순수한 확률: 더 많은 코드 => 버그 노출 위험이 더 높음). 많은 대규모 애플리케이션이 플래그를 필터링해 보세요이러한 오류가 빌드 시 노출되지 않도록 방지하세요.
-Os
또한 다음 사항만 명심하세요 .할 수 있는응용 프로그램을 더 빠르게 만드십시오. 이것은 규칙이 아닙니다. 확실히 컴파일러는노력하다프로그램을 더 작게 만드세요.
답변4
Kim이 말했듯이 결과 바이너리가 더 작으므로 스택 메모리 사용량이 더 작아집니다.
더 많은 프로그램이 CPU 캐시에 적합하므로 다른 최적화 플래그보다 더 빠를 수도 있습니다. 이것이 최근 더욱 인기를 끌고 있는 이유 중 하나입니다.