Visite também: Currículo ·  Efetividade BR-Mac

O que é LinuxDownload LinuxApostila LinuxEnviar notícia


GCC, LLVM, Open64, PCC: benchmark de desempenho dos compiladores

É sempre trabalhoso comparar compiladores, e mesmo quando a comparação se reduz à questão do desempenho (em tempo de compilação ou de execução), fatores como a maturidade de cada projeto, o suporte a plataformas e muitos outros precisam ser levados em consideração.

Mesmo assim o Phoronix se deu ao trabalho de simplesmente jogar às favas a questão de possibilitar o máximo de interpretações objetivas, e colocou uma série de compiladores livres (2 versões do GCC, LLVM, PCC, Open64) e mais 2 combos (LLVM otimizando e gerando o código objeto, mas usando o front-end do GCC como parser) para rodar os benchmarks aos quais conseguissem suportar em suas configurações default, em um processador Atom 64 bits com 2GB de RAM rodando Ubuntu, e publicou os resultados numéricos.

Nem todos os compiladores puderam participar de todos os testes, e é importante observar que compiladores em versões de desenvolvimento e em versões de produção foram tratados igualmente, assim como compiladores multi-arquitetura e especializados em uma única arquitetura também foram colocados no mesmo balaio, o que também ajuda a tornar ainda mais difusas as conclusões alcançadas.

O artigo é longo e merece leitura atenta. Não dá para resumir este benchmark (especialmente quando seus próprios autores não incluíram uma conclusão geral), mas produzi uma tabela com as minhas observações sobre os testes realizados, que levam à minha conclusão de que estes resultados refletem a ebulição em andamento do cenário dos compiladores livres.

Para interpretar a tabela a seguir, cuidado com conclusões simplistas do tipo “tal compilador ganhou mais testes” ou “tal compilador participou de mais testes” – se servem para alguma conclusão prática neste momento, o que estes números genéricos indicam é que há vários compiladores livres alcançando estágios de desempenho interessantes e que podem justificar alguma atenção dos desenvolvedores para potencialmente adotá-los como ferramentas, ao mesmo tempo em que indicam espaços em que há bastante oportunidade para melhoria de desempenho para alguns dos nomes mais conhecidos.

Veja abaixo os benchmarks realizados, o compilador melhor colocado e outros detalhes que me atraíram a atenção em cada um deles:

  • Apache: quase empate entre os 3 compiladores participantes. Ganhou o combo LLVM-GCC 4.2.1.
  • John the Ripper MD5: 5 participantes, ganhou o GCC 4.4.5.
  • John the Ripper Blowfish: 5 participantes, ganhou por boa margem o combo LLVM-GCC 4.5.1 (DragonEgg).
  • BYTE Dhrystones: 6 participantes, ganhou por larga margem o combo LLVM-GCC 4.2.1.
  • BYTE reg. arithmetic: 3 participantes, quase empate, ganhou o Open64, e foi o único teste em que o PCC ficou à frente do GCC (mas ele só participou de mais dois…).
  • BYTE floating point: 3 participantes, ganhou por larga margem o Open64.
  • C-RAY: 5 participantes, ganhou o Open64 por larga margem.
  • Himeno: 5 participantes, ganhou por larga margem o Open64.
  • MAFFT: 5 participantes, ganhou o Open64.
  • 7-Zip: 5 participantes, ganhou o GCC 4.5.1.
  • FLAC: 3 participantes, ganhou por boa margem o combo LLVM-GCC 4.2.1.
  • GraphicksMagick: 3 participantes, as 2 versões do GCC empataram.

(via phoronix.com)


• Publicado por Augusto Campos em 2011-02-02

Comentários dos leitores

Os comentários são responsabilidade de seus autores, e não são analisados ou aprovados pelo BR-Linux. Leia os Termos de uso do BR-Linux.

    Tércio Martins (usuário não registrado) em 2/02/2011 às 2:34 pm

    No fórum do Phoronix, vários usuáros fizeram testes paralelos, e na maioria deles o TCC vencia de lavada, seguido pelo Open64.

    Muito bom esse benchmark! Isso mostra que o GCC nem sempre é o pior como muitos pensavam (eu inclusive). E mostra também que temos mais opções que normalmente consideramos (Open64 sempre foi desconsiderado nos benchmarks anteriores).
    O problema agora é compilar um Linux inteiro só com o Open64 ou o LLVM-GCC. Tentei com o LLVM-GCC 4.2.1 e não consegui. Vou descrever as minhas experiências logo em meu blog.

    Lucas De Marchi (usuário não registrado) em 6/02/2011 às 4:25 pm

    perles: o kernel do Linux depende de várias extensões do compilador GCC à linguagem C. Só recentemente teve-se a notícia de um kernel Linux compilado com o LLVM, mas que pelo que me parece ainda requer alguns truques.

    Anteriormente o icc (da intel) compilava o kernel, mas acredito que não seja mais o caso.

Este post é antigo (2011-02-02) e foi arquivado. O envio de novos comentários a este post já expirou.