Resumo: Códigos gerados por compiladores podem não ter a melhor qualidade possível, devido a Dificuldade de obter a seqüência de instruções ótima em meio a inúmeras possibilidades. Desenvolvedores de compiladores procuraram melhorar a qualidade do código gerado mediante a implementação de inúmeras otimizações. A aplicação de otimizações, porém, Pode prejudicar a qualidade do código, se mal utilizada. Dentre dezenas de otimizações Geralmente providas por um compilador e um desabo, até mesmo para o mais experiente programador, saber quais gerarão o melhor código alvo para determinado código fonte. Nesse contexto, o desenvolvimento de seletores de otimizações e um desafio nos dias atuais. Abordagens para a implementação desses seletores são encontradas na literatura e envolvem o uso de buscas aleatórias, exaustivas e heurísticas, algoritmos genéticos e aprendizagem de máquina. Tendo em vista a problemática da seleção automática de otimizações, o presente trabalho apresenta quatro novas abordagens para seleção de bons conjuntos de otimizações. A experimentação das abordagens aqui propostas mostrou que estas possibilitam um ganho de desempenho significativo em comparação a outras propostas encontradas na literatura, sugerindo sua ampla aplicabilidade em contextos diversificados.
Abstract: Compiler generated codes may not have the best quality possible because it is difficult to obtain the optimal sequence of instructions as it has endless possibilities. Compilers developers tried to improve code quality implementing some optimizations. However, when it is not used correctly, the application of optimizations may impair code quality. Among dozens of optimizations usually provided by a compiler, it is a challenge to know which ones will generate a better target code for a specific source code, even for the most experienced programmer. In this context, development of automated optimizations selectors is a challenge today. Approaches to the implementation of these selectors are found in the literature and include use of random, exhaustive and heuristics searches, genetic algorithms and machine learning. In view of the optimizations automatic selection problematic, this work presents four new approaches for selection of good optimizations sets. The experimental evaluation of this approaches showed that they make it possible a significant performance gain compared to approaches found in literature and suggests a wide applicability in various contexts. |