Como otimizar o desempenho do programa

Se você pode executar o programa de thread único em um depurador ou IDE, e se há uma maneira de parar a execução do programa em um ponto de tempo arbitrária, batendo uma tecla ou clicar em um botão no IDE, então há uma muito simples e forma eficaz de erradicar os problemas de desempenho.

{Adsense1}

Passos

Otimizar o seu programa's Performance Step 1
1
Comece o seu programa em execução sob o depurador. Se é um tipo de programa que normalmente é executado muito rápido, mas você quer que ele vá mais rápido, você pode adicionar um loop externo temporária de, digamos, 1000 vezes, para dar-lhe tempo suficiente para detê-lo.
{Adsense2}
  • Otimizar o seu programa's Performance Step 2
    2
    Enquanto ele está sendo lenta, deter-lo manualmente. Para fazer isso, golpeando uma pausa ou pausa chave que faz com que a parada do programa, onde quer que esteja. Não fazer isso definindo um ponto de interrupção no código, porque então você não será capaz de ver o que estava fazendo quando você atingiu a chave.
  • 3
    Grave a pilha de chamadas. O que precisa de registro é o número de cada declaração sobre a pilha de chamadas de arquivo e linha. Espero que haja uma maneira fácil de copiar e colar essas informações em um editor de texto, mas se não, fazê-lo da maneira mais difícil, com papel e lápis.
  • Otimizar o seu programa's Performance Step 4


    4
    Reiniciá-lo, detê-lo novamente, e gravar novamente. Você pode continuar a execução de onde você estava, ou reiniciar completamente o programa. De qualquer maneira é OK. Você pode fazer isso várias vezes, até cerca de 20.
  • Otimizar o seu programa's Performance Step 5
    5
    Examinar as amostras pilha de chamadas por declarações comuns. Você pode achar que é útil para agrupar as amostras pilha de chamadas em uma estrutura de árvore recuado, assim você pode ver a semelhança entre as amostras. É importante lembrar que você está capturando declarações, não funções. Os números de linha são realmente importantes.


  • Otimizar o seu programa's Performance Step 6
    6
    Examine as declarações que aparecem em várias pilhas de chamadas. Estes são os seus candidatos para otimização. Por exemplo, se há alguma declaração no arquivo foo.cpp, linha 127, que acontece a mostrar-se em 8 das 20 amostras, então você deve dar uma boa olhada no que a declaração e ver se o que está fazendo é realmente necessário, porque se você pudesse se livrar dele, você vai economizar cerca de 40% do tempo de execução.
  • Otimizar o seu programa's Performance Step 7


    7
    Corrigir o problema. E aproveitar o aumento de velocidade.
  • 8
    Fazer tudo de novo, e novamente. Até que você não consegue encontrar qualquer outra coisa para otimizar. Provavelmente, o seu programa agora é muitas vezes mais rápido do que era para começar.
  • dicas

    • Não se preocupe com a recursividade. Isso é quando uma amostra pilha de chamadas mostra mais de uma instância de uma instrução particular. Isso só conta como uma aparição. O que importa é quantas amostras pilha conter a afirmação, não quantas vezes total de ele aparecer.
    • Vinte amostras é apenas um número redondo, e é sobre o lado alto. Se você ver uma declaração suspeito que aparece em quatro das cinco primeiras amostras, se é algo que você pode remover, você não precisa de mais amostras, porque você encontrou um grande problema.
    • Uma vez que você está desconfiado de uma declaração particular, você pode querer entender mais sobre o que estava fazendo. Uma boa maneira de fazer isso é tomar mais amostras até que a declaração mostra-se, e então você pode examinar os dados e estado do programa naquele ponto, até você entender completamente por que a declaração estava sendo executado. sabendo o "porque" diz-lhe se é realmente necessário. Muitas vezes, não é, e você pode trabalhar em torno dele.
    • Após fazer isso algumas vezes, provavelmente você vai reconhecer um padrão. O padrão é que os programas com pilhas de chamadas profundas tendem a ter mais oportunidades para aumento de velocidade. Isso pode levá-lo a adoptar um estilo de programação mais enxuta, com menos camadas de abstração.
    • Resistir à forte tentação de adivinhar, porque suposições são muitas vezes errado. A suposição é qualquer declaração do formulário "Talvez seja X" ou "Eu acho que é X" ou "Última vez que foi X - que você achou disso?" ou "Prestigiado autor perito diz muitas vezes é X". Não agir em suposições, mesmo os mais instruídos. Poderia um cirurgião operar dessa maneira? Poderia um piloto operar dessa maneira? Se você seguir o procedimento aqui você não terá que adivinhar, você vai conhecer o que consertar, e isso provavelmente vai ser algo que você nunca teria imaginado.

    avisos

    • Esteja preparado para ceticismo de colegas programadores que não acreditam que é tão fácil, ou isto eficaz. Show, não diga.
    • Muitos depuradores pausa apenas o segmento principal.

    Coisas que você precisa

    • Um depurador ou IDE com um "pausa" ou "pausa" tecla ou botão.



    » » Como otimizar o desempenho do programa