Otimizadores de Códigos Fonte
Por: Carolina234 • 16/3/2018 • 1.165 Palavras (5 Páginas) • 275 Visualizações
...
que será executado o código de dentro do loop. Por exemplo, se N tem o valor 100,
for (i=0; i<N; i++) { a=j+5;
f(a*i);
}
poderia ser melhorado retirando-se o comando a=j+5; do for. Ficaríamos com
a=j+5;
for (i=0; i<N; i++) f(a*i);
e 100 somas a menos seriam executadas. Por outro lado, se N=0, o programa foi “piorado”, ou “pessimizado”, porque o comando a=j+5; que era executado 0 vezes, passou a ser executado 1 vez. Mas pode haver um problema maior: se a variável a é usada após o loop, em vez de seu valor original, seu valor será, incorretamente, o resultado dado pela atribuição.
Depende muito da finalidade de um compilador o conjunto de otimizações que ele deve oferecer. Um compilador usado em um curso introdutório de programação não precisa de otimização, porque os programas são executados quase sempre apenas uma vez. (Em vez de otimização, este compilador deveria dar boas mensagens de erro, que pudessem auxiliar os principiantes na linguagem.) Por outro lado, um programa que vai ser compilado uma vez e executado muitas vezes deve ser otimizado tanto quanto possível. Neste caso estão programas de simulação, de previsão do tempo, e a maioria das aplicações numéricas.
De qualquer forma, a otimização de código objeto ainda é assunto de discussão, não só no otimizar e sim como otimizar
Quanto ao que otimizar, este está sendo encarado sob outro ponto de vista, desde o surgimento dos “compiler-compi-ler”, que por sua própria estrutura, permitem somente um passe no programa, o que restringe as chamadas otimizações globais
As duvidas em como otimizar o código podem ser resumidas nas seguintes questões :
A- Quais os métodos a utilizar?
B- Podem eles ser adaptados a menores e mais rápidos compiladores?
C- São esses métodos aplicáveis a tipos variados de linguagem?
A tendência geral é admitir que a análise de um programa, necessária a otimização do código objeto gerado, tem contribuído em grandes termos de extenções potenciais, a saber:
A- Ela pode ser estendida para detectar irregularidades no fluxo do programa;
B- A análise do fluxo do programa tem contribuído mais no sentido teórico que pratico isso é, houve muito mais condução a compreensão da estrutura de linguagem, isso poderá, eventualmente ser utilizada no desenvolvimento de futuras linguagens de programação.
Na maioria dos casos, os programas de tempo de execução prolongado ou uso frequente, são escritos por programadores experientes, aos quais devem ser deixada a recomendação no sentido de que procurem otimizar o código dos programas, evitando assim, a execução desnecessária de determinados comandos, a repetição de sub expressões comuns, etc. Estas medidas, evitariam a necessidade de que se tenha um compilador que executa otimizações globais( ou pelo menos aquelas que podem ser feitas pelo programador)
Entretanto, esta situação pode-se modificar, se as pesquisas para desenvolver algoritmos eficientes de otimização global produzir resultados melhores obtidos até agora.
...