O jogo de benchmarks da linguagem do computador - The Computer Language Benchmarks Game

O Computer Language Benchmarks Game (anteriormente chamado de The Great Computer Language Shootout ) é um projeto de software livre para comparar como um dado subconjunto de algoritmos simples pode ser implementado em várias linguagens de programação populares .

O projeto consiste em:

  • Um conjunto de problemas algorítmicos muito simples
  • Várias implementações para os problemas acima em várias linguagens de programação
  • Um conjunto de testes de unidade para verificar se as implementações enviadas resolvem a declaração do problema
  • Uma estrutura para executar e cronometrar as implementações
  • Um site para facilitar a comparação interativa dos resultados

Idiomas suportados

Devido a restrições de recursos, apenas um pequeno subconjunto de linguagens de programação comuns é suportado, a critério do operador do jogo.

Lista de idiomas suportados
  • Ada
  • C
  • Capela
  • C #
  • C ++
  • Dardo
  • Erlang
  • F #
  • Fortran
  • Ir
  • Haskell
  • Java
  • JavaScript
  • Julia
  • Lisp
  • Lua
  • OCaml
  • Pascal
  • Perl
  • PHP
  • Pitão
  • Raquete
  • Rubi
  • Ferrugem
  • Conversa fiada
  • Rápido

Métricas

Os seguintes aspectos de cada implementação são medidos:

É comum ver várias soluções na mesma linguagem de programação para o mesmo problema. Isso destaca que, dentro das restrições de uma dada linguagem, uma solução pode ser fornecida que seja de alta abstração, seja eficiente em termos de memória, seja rápida ou possa ser melhor paralelizada.

Programas de referência

Foi uma escolha de design desde o início incluir apenas problemas de brinquedos muito simples, cada um fornecendo um tipo diferente de desafio de programação. Isso fornece aos usuários do Benchmark Game a oportunidade de examinar as várias implementações.

História

O projeto ficou conhecido como The Great Computer Language Shootout até 2007.

Uma porta para Windows foi mantida separadamente entre 2002 e 2003.

As fontes foram arquivadas no GitLab.

Também existem forks mais antigos no GitHub.

O projeto está em constante evolução. A lista de linguagens de programação suportadas é atualizada aproximadamente uma vez por ano, seguindo as tendências do mercado. Os usuários também podem enviar soluções aprimoradas para qualquer um dos problemas ou sugerir o refinamento da metodologia de teste.

Ressalvas

Os próprios desenvolvedores destacam o fato de que aqueles que fazem pesquisas devem ter cuidado ao usar esses microbenchmarks:

[...] os benchmarks de JavaScript são fugazmente pequenos e se comportam de maneiras significativamente diferentes dos aplicativos reais. Documentamos inúmeras diferenças de comportamento e concluímos, a partir dessas diferenças medidas, que os resultados com base nos benchmarks podem enganar os implementadores de mecanismo JavaScript. Além disso, observamos comportamentos interessantes em aplicativos JavaScript reais que os benchmarks não conseguem exibir, sugerindo que estratégias de otimização anteriormente inexploradas podem ser produtivas na prática.

Impacto

Os resultados do benchmark revelaram vários problemas do compilador. Às vezes, um determinado compilador falha em processar construções incomuns, mas de outra forma, construções gramaticalmente válidas. Em outras ocasiões, o desempenho do tempo de execução ficou abaixo das expectativas, o que levou os desenvolvedores de compiladores a revisar seus recursos de otimização.

Vários artigos de pesquisa foram baseados em benchmarks, seus resultados e sua metodologia.

Veja também

Referências

links externos