Pergunta

Gostaria de selecionar as otimizações do compilador para gerar o aplicativo mais rápido possível.

Qual das seguintes configurações devo definir como verdadeira?

  • Eliminação de loja morta
  • Elimine expressões duplicadas em blocos e funções básicas
  • Habilitar variável de indução de loop e redução de força
  • Habilitar agendamento de instruções Pentium
  • Expanda funções intrínsecas comuns
  • Otimizar saltos
  • Use variáveis ​​de registro

Há também a opção 'Gerar o código mais rápido possível', que obviamente defini como verdadeira.No entanto, quando defino isso como verdadeiro, todas as opções acima ainda são definidas como falsas.

Então, gostaria de saber se alguma das opções acima irá acelerar o aplicativo se eu defini-las como verdadeiras?

Foi útil?

Solução

Então, gostaria de saber se alguma das opções acima irá acelerar o aplicativo se eu defini-las como verdadeiras?

Eu sei que alguns vão me odiar por isso, mas ninguém aqui pode te responder com sinceridade.Você tem que testar seu programa com e sem eles, e perfil cada construção e veja quais são os resultados.Adivinhar não levará ninguém a lugar nenhum.

Os compiladores já fazem toneladas (!) de ótimas otimizações, com ou sem sua permissão.Sua melhor aposta é escrever seu código de maneira limpa e organizada e se preocupar com a capacidade de manutenção e extensibilidade.Como gosto de dizer:Codifique agora, otimize mais tarde.

Outras dicas

Não microgerencie até a otimização individual.Os escritores de compiladores são pessoas muito inteligentes - basta ativá-los, a menos que você veja uma necessidade específica de não fazê-lo.Seu tempo é melhor gasto otimizando seu código (melhorando a complexidade algorítmica de suas funções, etc.) em vez de mexer nas opções do compilador.

Meu outro conselho: use um compilador diferente.A Intel tem uma grande reputação como compilador otimizador.É claro que VC e GCC também são ótimas opções.

Você poderia olhar o código gerado com diferentes opções compiladas para ver qual é a mais rápida, mas entendo que hoje em dia muitas pessoas não têm experiência em fazer isso.

Portanto, seria útil traçar o perfil do aplicativo.Se houver uma parte óbvia que exija velocidade, adicione algum código para executá-la mil ou dez milhões de vezes e cronometre usando utime() se estiver disponível.O loop deve ser executado por tempo suficiente para que outros processos executados de forma intermitente não afetem o resultado – dez a vinte segundos é um intervalo de referência popular.Ou execute vários testes de tempo.Compile diferentes casos de teste e execute-os para ver o que funciona melhor.

Passar uma ou duas horas brincando com as opções de otimização revelará rapidamente que a maioria tem efeito menor.No entanto, o mesmo tempo gasto pensando na essência do algoritmo e fazendo pequenas alterações (a remoção do código é especialmente eficaz) muitas vezes pode vastamente melhorar o tempo de execução.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top