CODE OPTIMIZATIONPresented By:Amita dasJayanti bhattacharyaJaistha Upadhyay
Designer da compilação                        Código fonte                      Analise Léxica                     Analise...
O que é otimização?   Em computação, otimização é o processo de modificar    fazer algum aspecto de um sistema para que t...
“Níveis” de otimizaçãoOtimização pode ocorrer em um número de "níveis":   Nível de design    No nível mais alto, o projet...
   Nível AssemblyNo nível mais baixo, escrevendo código usando uma linguagem de  montagem projetado para uma plataforma d...
Quando a otimizar?    Optimização é muitas vezes realizada no final do estágio de    desenvolvimento, uma vez que:•   Redu...
Critérios para a otimização Uma otimização deve preservar o significado deum programa:   - Não pode alterar a saída produ...
As melhorias podem ser feitas em várias fases:Código Fonte:- Alterações no algoritmo podem produzir melhorias espetaculare...
Tipos de Otimização   Remoção de sub-expressão comum.   Otimização de Códigos Mortos   Otimização de Loops.
Remoção de sub-expressão comum.Remoção de sub-expressão comum é uma otimização que procura porocorrências de expressões id...
Otimização de Código MortoEliminação de código morto é uma otimização do compilador queremove código que não afeta um prog...
Código InacessivelEm Programação de Computadores, código inacessível ou código morto éo código que existe no código fonte ...
Código redundanteCódigo redundante é o código que é executado masnão tem qualquer efeito sobre a saída a partir de umprogr...
Otimização de LoopOtimização de Loop desempenha um papel importante namelhoria do desempenho do código fonte, reduzindodes...
Loop Invariante   i=1                                     i=1   s= 0                                    s= 0   do{        ...
Variáveis de Induçãoi=1                          i=1s= 0                         s= 0S1=0                         S1=0S2=0...
Common Sub-expression Removal   It is used to remove redundant computations which usually improves    the execution time ...
Three Address Code of Quick Sort1    i=m-1                 16   t7 = 4 * I2    j=n                   17   t8 = 4 * j3    t...
Find The Basic Block1    i=m-1                    16   t7 = 4 * I2    j=n                      17   t8 = 4 * j3    t1 =4 *...
B1                       Flow Graph     i=m-1     j=n     t1 =4 * n     v = a[t1]                 B5                 B6B2 ...
B1       Common Subexpression Elimination     i=m-1     j=n     t1 =4 * n     v = a[t1]            B5                 B6B2...
B1       Common Subexpression Elimination     i=m-1     j=n     t1 =4 * n     v = a[t1]            B5                B6B2 ...
B1       Common Subexpression Elimination     i=m-1     j=n     t1 =4 * n     v = a[t1]            B5                B6B2 ...
B1       Common Subexpression Elimination     i=m-1     j=n     t1 =4 * n     v = a[t1]            B5                B6B2 ...
B1       Common Subexpression Elimination     i=m-1     j=n     t1 =4 * n     v = a[t1]            B5                B6B2 ...
B1       Common Subexpression Elimination     i=m-1     j=n     t1 =4 * n     v = a[t1]            B5                B6B2 ...
B1       Common Subexpression Elimination     i=m-1     j=n     t1 =4 * n     v = a[t1]            B5                B6B2 ...
B1       Common Subexpression Elimination     i=m-1     j=n     t1 =4 * n     v = a[t1]            B5                B6B2 ...
B1       Common Subexpression Elimination     i=m-1     j=n     t1 =4 * n     v = a[t1]            B5                B6B2 ...
B1       Common Subexpression Elimination     i=m-1     j=n     t1 =4 * n     v = a[t1]            B5                B6B2 ...
B1       Common Subexpression Elimination     i=m-1     j=n     t1 =4 * n     v = a[t1]            B5                     ...
B1                       Dead Code Elimination     i=m-1     j=n     t1 =4 * n     v = a[t1]                       B5     ...
B1                       Dead Code Elimination     i=m-1     j=n     t1 =4 * n     v = a[t1]                       B5     ...
B1                       Reduction in Strength     i=m-1     j=n     t1 =4 * n     v = a[t1]                       B5     ...
B1                       Reduction in Strength     i=m-1     j=n     t1 =4 * n     v = a[t1]                       B5     ...
Compiladores - Otimização de código Intermediário
Compiladores - Otimização de código Intermediário
Compiladores - Otimização de código Intermediário
Compiladores - Otimização de código Intermediário
Compiladores - Otimização de código Intermediário
Compiladores - Otimização de código Intermediário
Compiladores - Otimização de código Intermediário
Compiladores - Otimização de código Intermediário
Compiladores - Otimização de código Intermediário
Compiladores - Otimização de código Intermediário
Próximos SlideShares
Carregando em…5
×

Compiladores - Otimização de código Intermediário

2.111 visualizações

Publicada em

Seminário apresentado por alunos da Universidade de Pernambuco Caruaru sobre Otimizaçãod e Código Intermediário

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
2.111
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
67
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Compiladores - Otimização de código Intermediário

  1. 1. CODE OPTIMIZATIONPresented By:Amita dasJayanti bhattacharyaJaistha Upadhyay
  2. 2. Designer da compilação Código fonte Analise Léxica Analise SintáticaTabela de Analise Semântica Exibição deSímbolos Erros Geração do Código Intermediário Otimização de Código Geração do Código Código Objeto
  3. 3. O que é otimização? Em computação, otimização é o processo de modificar fazer algum aspecto de um sistema para que trabalhe com mais eficiência ou utilize menos recursos. Por exemplo, um programa de computador pode ser otimizada de modo que ele seja executado mais rápido, ou seja capaz de operar com o menos armazenamento de memória ou outros recursos, ou consomem menos energia. O sistema pode ser um programa único de computador, um conjunto de computadores ou mesmo toda uma rede como a internet.
  4. 4. “Níveis” de otimizaçãoOtimização pode ocorrer em um número de "níveis": Nível de design No nível mais alto, o projeto pode ser otimizado para fazer o melhor uso dos recursos disponíveis. A implementação deste projeto irá se beneficiar do uso de algoritmos eficientes e adequados a implementação destes algoritmos irão beneficiar de escrever código de boa qualidade. O projeto arquitetônico de um sistema predominantemente afeta seu desempenho. A escolha do algoritmo afeta a eficiência mais do que qualquer outro item do projeto. Nível de compilação O uso de um compilador otimizado tende a assegurar que o programa executável é optimizada, pelo menos tanto quanto o compilador pode prever.
  5. 5.  Nível AssemblyNo nível mais baixo, escrevendo código usando uma linguagem de montagem projetado para uma plataforma de hardware específico, normalmente, produzem o código mais eficiente, pois o programador pode aproveitar o repertório completo de instruções de máquina. Os sistemas de operação da maior parte das máquinas tem sido tradicionalmente escrito em código Assembler por esta razão. Runtime (tempo de execução) Apenas compiladores e programadores assembler são capazes de realizar a otimização de tempo de execução.
  6. 6. Quando a otimizar? Optimização é muitas vezes realizada no final do estágio de desenvolvimento, uma vez que:• Reduz a legibilidade• Adiciona código que é utilizado para melhorar o desempenho
  7. 7. Critérios para a otimização Uma otimização deve preservar o significado deum programa: - Não pode alterar a saída produzida para qualquer entrada. - Não pode introduzir um erro Deve, em média, acelerar os programas Transformação deve valer a pena o esforço
  8. 8. As melhorias podem ser feitas em várias fases:Código Fonte:- Alterações no algoritmo podem produzir melhorias espetaculares- Criação de perfil pode ser útil para chamar a atenção de umprogramador no código de suma importância.Código Intermediário:- Compilador pode melhorar loops, chamadas de procedimento e cálculosde endereço- Normalmente apenas compiladores otimizando incluir esta fase.Código Alvo:- Os compiladores podem usar registros com eficiência.- Transformação Peephole pode ser aplicado
  9. 9. Tipos de Otimização Remoção de sub-expressão comum. Otimização de Códigos Mortos Otimização de Loops.
  10. 10. Remoção de sub-expressão comum.Remoção de sub-expressão comum é uma otimização que procura porocorrências de expressões idênticas (ou seja, todos eles avaliar o mesmovalor), e as análises se vale a penas em substituir por uma única variávelmantendo o valor calculado. a=b * c + g temp=b * c a=temp + g d=b * c * d d=temp * d
  11. 11. Otimização de Código MortoEliminação de código morto é uma otimização do compilador queremove código que não afeta um programa. Remoção de tal código tem duas vantagens encolhe o tamanho do programa, uma consideração importante em alguns contextos. Ele permite que o programa em execução evitar a execução de operações irrelevantes, o que reduz seu tempo de execução. Eliminação de código morto é de dois tipos: - Código Inacessível - Declaração redundante
  12. 12. Código InacessivelEm Programação de Computadores, código inacessível ou código morto éo código que existe no código fonte de um programa, mas nunca pode serexecutado. Program Code Optimized Code If (a>b) m=a If (a>b) elseif (a<b) m=a m=b elseif (a<b) elseif (a==b) m=b m=0 else else m=0 m=-1
  13. 13. Código redundanteCódigo redundante é o código que é executado masnão tem qualquer efeito sobre a saída a partir de umprograma main(){ int a,b,c,r; a=5; b=6; c=a + b; Adicionando complexidade de tempo e espaço r=2; r++; printf(“%d”,c); }
  14. 14. Otimização de LoopOtimização de Loop desempenha um papel importante namelhoria do desempenho do código fonte, reduzindodespesas gerais associadas com loops de execução. Otimização de loop pode ser feito através da remoção: - Loop invariante ​ - Variáveis de indução
  15. 15. Loop Invariante i=1 i=1 s= 0 s= 0 do{ a =5 s= s + i do{ a =5 s= s + i i=i+1 i=i+1 { { while (i < =n) while (i < =n)Trazendo a = 5fazer fora do loop while, é chamado movimento de código.
  16. 16. Variáveis de Induçãoi=1 i=1s= 0 s= 0S1=0 S1=0S2=0 S2=0while (i < =n) t2=0{ while (i < =n)s= s + a[ i ] {t1 = i * 4 s= s + a[ i ] “+” replaced “ * ”,s= s + b[ t1 ] t1 = t1+ 4 t1 was madet2 = t1 +2 s= s + b[ t1 ] independent of is2= s2 + c[ t2 ] s2= s2 + c[t1 +2 ]i=i+1 i=i+1} } ​ t1, t2 são variáveis de indução. i está induzindo t1 e t1 está induzindo t2
  17. 17. Common Sub-expression Removal It is used to remove redundant computations which usually improves the execution time of a program.
  18. 18. Three Address Code of Quick Sort1 i=m-1 16 t7 = 4 * I2 j=n 17 t8 = 4 * j3 t1 =4 * n 18 t9 = a[t8]4 v = a[t1] 19 a[t7] = t95 i=i +1 20 t10 = 4 * j6 t2 = 4 * i 21 a[t10] = x7 t3 = a[t2] 22 goto (5)8 23 if t3 < v goto (5) t11 = 4 * I9 24 j=j–1 x = a[t11]10 25 t4 = 4 * j11 26 t12 = 4 * i t5 = a[t4]12 27 t13 = 4 * n if t5 > v goto (9)13 28 t14 = a[t13]14 if i >= j goto (23) 29 a[t12] = t1415 t6 = 4 * i 30 t15 = 4 * n x = a[t6] a[t ] = x
  19. 19. Find The Basic Block1 i=m-1 16 t7 = 4 * I2 j=n 17 t8 = 4 * j3 t1 =4 * n 18 t9 = a[t8]4 v = a[t1] 19 a[t7] = t95 i=i +1 20 t10 = 4 * j6 t2 = 4 * i 21 a[t10] = x7 t3 = a[t2] 22 goto (5)8 23 if t3 < v goto (5) t11 = 4 * i9 24 j=j–1 x = a[t11]10 25 t4 = 4 * j11 26 t12 = 4 * i t5 = a[t4]12 27 t13 = 4 * n if t5 > v goto (9)13 28 t14 = a[t13]14 if i >= j goto (23) 29 a[t12] = t1415 t6 = 4 * i 30 t15 = 4 * n x = a[t6] a[t ] = x
  20. 20. B1 Flow Graph i=m-1 j=n t1 =4 * n v = a[t1] B5 B6B2 t6 = 4 * i t11 = 4 * i i=i +1 x = a[t6] x = a[t11] t2 = 4 * i t7 = 4 * i t12 = 4 * i t3 = a[t2] t8 = 4 * j t13 = 4 * n if t3 < v goto B2 t9 = a[t8] t14 = a[t13]B3 a[t7] = t9 a[t12] = t14 j=j–1 t10 = 4 * j t15 = 4 * n t4 = 4 * j a[t10] = x a[t15] = x t5 = a[t4] goto B2 if t5 > v goto B3B4 if i >= j goto B6
  21. 21. B1 Common Subexpression Elimination i=m-1 j=n t1 =4 * n v = a[t1] B5 B6B2 t6 = 4 * i t11 = 4 * i i=i +1 x = a[t6] x = a[t11] t2 = 4 * i t7 = 4 * i t12 = 4 * i t3 = a[t2] t8 = 4 * j t13 = 4 * n if t3 < v goto B2 t9 = a[t8] t14 = a[t13]B3 a[t7] = t9 a[t12] = t14 j=j–1 t10 = 4 * j t15 = 4 * n t4 = 4 * j a[t10] = x a[t15] = x t5 = a[t4] goto B2 if t5 > v goto B3B4 if i >= j goto B6
  22. 22. B1 Common Subexpression Elimination i=m-1 j=n t1 =4 * n v = a[t1] B5 B6B2 t6 = 4 * i t11 = 4 * i i=i +1 x = a[t11] x = a[t6] t2 = 4 * i t12 = 4 * i t8 = 4 * j t3 = a[t2] t13 = 4 * n t9 = a[t8] if t3 < v goto B2 t14 = a[t13] a[t6] = t9B3 a[t12] = t14 t10 = 4 * j=j–1 j t15 = 4 * n t4 = 4 * j a[t10] = x a[t15] = x t5 = a[t4] if t5 > v goto B3 goto B2B4 if i >= j goto B6
  23. 23. B1 Common Subexpression Elimination i=m-1 j=n t1 =4 * n v = a[t1] B5 B6B2 t6 = 4 * i t11 = 4 *i i=i +1 x = a[t11] x = a[t6] t2 = 4 * i t12 = 4 * i t8 = 4 * j t3 = a[t2] t13 = 4 * n t9 = a[t8] if t3 < v goto B2 t14 = a[t13] a[t6] = t9B3 a[t12] = t14 a[t8] = x j=j–1 t15 = 4 * n t4 = 4 * j goto B2 a[t15] = x t5 = a[t4] if t5 > v goto B3B4 if i >= j goto B6
  24. 24. B1 Common Subexpression Elimination i=m-1 j=n t1 =4 * n v = a[t1] B5 B6B2 t6 = 4 * i t11 = 4 * i i=i +1 x = a[t11] x = a[t6] t2 = 4 * i t12 = 4 * i t8 = 4 * j t3 = a[t2] t13 = 4 * n t9 = a[t8] if t3 < v goto B2 t14 = a[t13] a[t6] = t9B3 a[t12] = t14 a[t8] = x j=j–1 t15 = 4 * n t4 = 4 * j goto B2 a[t15] = x t5 = a[t4] if t5 > v goto B3B4 if i >= j goto B6
  25. 25. B1 Common Subexpression Elimination i=m-1 j=n t1 =4 * n v = a[t1] B5 B6B2 t6 = 4 * i t11 = 4 * i i=i +1 x = a[t11] x = a[t6] t2 = 4 * i t13 = 4 * n t8 = 4 * j t3 = a[t2] t14 = a[t13] t9 = a[t8] if t3 < v goto B2 a[t11] = t14 a[t6] = t9B3 t15 = 4 * n a[t8] = x j=j–1 a[t15] = x t4 = 4 * j goto B2 t5 = a[t4] if t5 > v goto B3B4 if i >= j goto B6
  26. 26. B1 Common Subexpression Elimination i=m-1 j=n t1 =4 * n v = a[t1] B5 B6B2 t6 = 4 * i t11 = 4 * i i=i +1 x = a[t11] x = a[t6] t2 = 4 * i t8 = 4 * j t13 = 4 * n t3 = a[t2] t9 = a[t8] t14 = a[t13] if t3 < v goto B2 a[t6] = t9 a[t11] = t14B3 a[t8] = x a[t13] = x j=j–1 t4 = 4 * j goto B2 t5 = a[t4] if t5 > v goto B3B4 if i >= j goto B6
  27. 27. B1 Common Subexpression Elimination i=m-1 j=n t1 =4 * n v = a[t1] B5 B6B2 t6 = 4 * i t11 = 4 * i i=i +1 x = a[t11] x = a[t6] t2 = 4 * i t8 = 4 * j t13 = 4 * n t3 = a[t2] t9 = a[t8] t14 = a[t13] if t3 < v goto B2 a[t6] = t9 a[t11] = t14B3 a[t8] = x a[t13] = x j=j–1 t4 = 4 * j goto B2 t5 = a[t4] if t5 > v goto B3B4 if i >= j goto B6
  28. 28. B1 Common Subexpression Elimination i=m-1 j=n t1 =4 * n v = a[t1] B5 B6B2 x = a[t2] t11 = 4 * i i=i +1 t8 = 4 * j x = a[t11] t2 = 4 * i t9 = a[t8] t13 = 4 * n t3 = a[t2] a[t2] = t9 t14 = a[t13] if t3 < v goto B2 a[t8] = x a[t11] = t14B3 goto B2 a[t13] = x j=j–1 t4 = 4 * j t5 = a[t4] if t5 > v goto B3B4 if i >= j goto B6
  29. 29. B1 Common Subexpression Elimination i=m-1 j=n t1 =4 * n v = a[t1] B5 B6B2 x = t3 t11 = 4 * i i=i +1 t8 = 4 * j x = a[t11] t2 = 4 * i t9 = a[t8] t13 = 4 * n t3 = a[t2] a[t2] = t9 t14 = a[t13] if t3 < v goto B2 a[t8] = x a[t11] = t14B3 goto B2 a[t13] = x j=j–1 t4 = 4 * j t5 = a[t4] if t5 > v goto B3B4 if i >= j goto B6
  30. 30. B1 Common Subexpression Elimination i=m-1 j=n t1 =4 * n v = a[t1] B5 B6B2 x = t3 t11 = 4 * i i=i +1 a[t2] = t5 x = a[t11] t2 = 4 * i a[t4] = x t13 = 4 * n t3 = a[t2] goto B2 t14 = a[t13] if t3 < v goto B2 a[t11] = t14B3 a[t13] = x j=j–1 t4 = 4 * j t5 = a[t4] if t5 > v goto B3B4 if i >= j goto B6
  31. 31. B1 Common Subexpression Elimination i=m-1 j=n t1 =4 * n v = a[t1] B5 B6B2 x = t3 x = t3 i=i +1 a[t2] = t5 t14 = a[t1] t2 = 4 * i a[t4] = x a[t2] = t14 t3 = a[t2] goto B2 a[t1] = x if t3 < v goto B2B3 j=j–1 Similarly for B6 t4 = 4 * j t5 = a[t4] if t5 > v goto B3B4 if i >= j goto B6
  32. 32. B1 Dead Code Elimination i=m-1 j=n t1 =4 * n v = a[t1] B5 B6B2 x = t3 x = t3 i=i +1 a[t2] = t5 t14 = a[t1] t2 = 4 * i a[t4] = x a[t2] = t14 t3 = a[t2] goto B2 a[t1] = x if t3 < v goto B2B3 j=j–1 t4 = 4 * j t5 = a[t4] if t5 > v goto B3B4 if i >= j goto B6
  33. 33. B1 Dead Code Elimination i=m-1 j=n t1 =4 * n v = a[t1] B5 B6B2 a[t2] = t5 t14 = a[t1] a[t4] = t3 a[t2] = t14 i=i +1 t2 = 4 * i goto B2 a[t1] = t3 t3 = a[t2] if t3 < v goto B2B3 j=j–1 t4 = 4 * j t5 = a[t4] if t5 > v goto B3B4 if i >= j goto B6
  34. 34. B1 Reduction in Strength i=m-1 j=n t1 =4 * n v = a[t1] B5 B6B2 a[t2] = t5 t14 = a[t1] a[t4] = t3 a[t2] = t14 i=i +1 t2 = 4 * i goto B2 a[t1] = t3 t3 = a[t2] if t3 < v goto B2B3 j=j–1 t4 = 4 * j t5 = a[t4] if t5 > v goto B3B4 if i >= j goto B6
  35. 35. B1 Reduction in Strength i=m-1 j=n t1 =4 * n v = a[t1] B5 B6B2 t 2 = 4 * i a[t2] = t5 t14 = a[t1] t4 = 4 * j a[t4] = t3 a[t2] = t14 goto B2 a[t1] = t3 t2 = t 2 + 4 t3 = a[t2]B3 if t3 < v goto B2 t4 = t 4 - 4 t5 = a[t4] if t5 > v goto B3B4 if i >= j goto B6

×