nov
12
2009

Otimização

Dentre as diversas apresentações no Linux Kongress 2009 a palestra do Felix von Leitner’s me chamou atenção. Com título “Compiler Optimization Survey” ele discutiu os aspectos relacionados a programação nos compiladores modermos e as possibilidades de otimização (slides).  A idéia básica é que:

  • Otimização é importante
  • Mas frequentemente: Código legível é mais importante
  • Aprenda o que seu compilador faz
    E então deixe-o fazê-lo.

Exemplo. As quatro instruções abaixo fazem a mesma coisa, zeram um registrador da CPU x86, qual é a melhor forma?

Zerando registros

Analisando no GDB (x/FMT ADDRESS) temos:

movl  0xb8    0x00    0x00    0x00    0x00
andl  0x83    0xe0    0x00
subl  0x29    0xc0  
xorl  0x31    0xc0
 

E agora? sub ou xor, veja que ambos produzem uma falsa dependência em %eax, mas a CPU sabe como ignorar no caso do xor.

Você sabia?

O compilador sim.

Se você usar o sub na prova seu professor provavelmente irá descontar alguns pontos ou te dar zero…

  • Se você fizer uma otimizacão, teste em dados reais.
  • Se tornar o código ilegível não tornar o programa drasticamente rápido, não faça.
movl  0xb8    0×00    0×00    0×00    0×00
andl  0×83    0xe0    0×00
subl  0×29    0xc0
xorl  0×31    0xc0

tags: ,
posted in programação by Tiago Maluta

Follow comments via the RSS Feed | Deixe um comentário | Trackback URL

Leave Your Comment