Otimização
[Warning: This post is a backup recovery from my previous Wordpress blog. All content was automatically converted accessing a MySQL database using a Python script (details). Mostly are in Portuguese but if you are interest I can translate to English. If you found any problem dont’t hesitate to contact me in comments.]
Dentre as diversas apresentaes no Linux Kongress 2009 a palestra do Felix von Leitner's me chamou ateno. Com ttulo "Compiler Optimization Survey" ele discutiu os aspectos relacionados a programao nos compiladores modermos e as possibilidades de otimizao (slides). A idia bsica que:
- Otimizao importante
- Mas frequentemente: Cdigo legvel mais importante
- Aprenda o que seu compilador faz E ento deixe-o faz-lo.
Exemplo. As quatro instrues abaixo fazem a mesma coisa, zeram um registrador da CPU x86, qual a melhor forma?
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 dependncia 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 otimizaco, teste em dados reais.
- Se tornar o cdigo ilegvel no tornar o programa drasticamente rpido, no faa.