por RobL » 19 Set 2009 08:44
Se compilador livre, no caso GCC, é mais eficiente que um proprietário, não é uma resposta simples.
1-O problema maior está se o usuário está disposto a ler tudo que faz o compilador. Se sim, o GCC terá eficiência igual, próxima ou melhor.
2-Outro questão: Se o usuário usa qualquer compilador sem conhecer profundamente a relação entre o set de instrução do chip e a estratégia do compilador em uso, tanto faz. Qualquer compilador pode ser usado.
Neste caso os de uso específico para tal chip seria mais recomendado.
3- A eficiência depende enormemente de como seu código fonte é escrito.
Sim. Um exemplo prático que testei: Usei uma conversão bin-bcd escrevendo o código em uma linha.
Desmembrei a mesma operação auxiliando matematicamente o compilador, por conhecer sua estratégia. O resultado foi uma redução no assembly em 30% o que resultou também em melhor eficiência (lembrar que nem sempre a redução do código aumenta a eficiência).
O GCC tem meios de optimizar o código, mas depende de como seu fonte está escrito, especialmente, como suas variáveis foram definidas, dentre outras. Se alguém acha que nos compiladores proprietário esses cuidados não exitem, estão enganados. Cabe lembrar que compiladores livres não tem estratégia de marketing já os outros tem.
Um grande conhecedor de ARM, Mr Trevor da Hitex publicou que o GCC era 3,5 X menos eficiente que compiladores proprietários e mostrou isso.
Isso gerou uma uma enxurrada de e-mails.
Do meu ponto de vista, acho suspeito um produtor de soft proprietário entrar nesse mérito, sem tornar claro o nicho. Por outro lado, sabemos que se um compilador for focado em certa área de aplicação, este será imbatível neste nicho. O GCC é um compilador de "largo espectro" e cabe ao usuário torná-lo eficiente.
Não tenha dúvida que um compilador proprietário é aparentemente mais simples de ser usado. Não tenha dúvida que em casos de uso profissional os compiladores proprietários lhe darão o melhor custo / benefício devido ao tempo de aprendizado (lead time), pois contam com suporte e tem a obrigação de lhe garantir um bom resultado.