A otimização do tamanho reduz o uso da memória de tempo de execução, bem como o tamanho binário?

5

A otimização do tamanho com gcc -Os somente reduz o tamanho binário de um programa ou também reduz o uso da memória de tempo de execução? Eu sei o que exatamente os resultados dependem do código específico, mas em geral o resultado é um uso menor de memória?

    
por Falmarri 26.05.2011 / 01:28

4 respostas

6

Obviamente, como o programa precisa ser carregado na memória, -Os resultará em menor uso de memória. Mas esse é o único efeito no uso da memória que ele terá.

    
por 26.05.2011 / 08:35
3

Um aspecto é que -Os tentará dar a você um aplicativo menor, e como ele é menor às vezes ele será executado mais rapidamente, já que há menos código para executar.

    
por 26.05.2011 / 10:42
2

Na verdade, de acordo com algumas fontes, como o gentoo-wiki , o -Os flag pode ter mais benefícios do que apenas uma pegada binária reduzida. Mas o uso extensivo dele pode causar problemas. Os benefícios reais podem ser vistos em programas grandes, mas como o sinalizador pode acionar alguns bugs, é necessário ter cuidado para não usá-lo com código instável. Então, infelizmente, isso significa que softwares realmente grandes são mais propensos a expor erros (por pura probabilidade: mais código = > maior risco de exposição a bugs). Muitos aplicativos grandes filtram essa sinalização no momento da criação para evitar que esses bugs sejam expostos.

Lembre-se também de que -Os pode tornar um aplicativo mais rápido - isso não é uma regra. O que é certo é que o compilador irá tentar tornar o programa menor.

    
por 08.08.2011 / 16:34
1

Como Kim diz, o binário resultante é menor, então o uso da memória da pilha também será menor.

Ele também pode ser mais rápido do que alguns outros sinalizadores de otimização, porque mais do programa caberá nos caches da CPU. Essa é uma razão pela qual se tornou mais popular ultimamente.

    
por 26.05.2011 / 15:15