# Benchmark (computação)

Em computação, benchmark é o ato de executar um programa de computador, um conjunto de programas ou outras operações, a fim de avaliar o desempenho relativo de um objeto, normalmente executando uma série de testes padrão e ensaios nele.
O termo "benchmark" é também comumente usado para os próprios programas (de benchmarking) desenvolvidos para executar o processo. Normalmente, benchmarking é associado com avaliação de características de performance de um hardware de computador como, por exemplo, o desempenho da operação de ponto flutuante de uma CPU, mas há circunstâncias em que a técnica também é aplicável a software. Benchmarks de software são feitos, por exemplo, em compiladores ou sistemas de gerenciamento de banco de dados.
Benchmarks provêm um método de comparação da performance de vários subsistemas dentre as diferentes arquiteturas de chips e sistemas. Benchmarking é útil para o entendimento de como o gerenciador de banco de dados responde sob a variação de condições. Pode-se criar cenários que testam o tratamento de deadlock, performance dos utilitários, diferentes métodos de carregar dados, características da taxa de transição quando mais usuários são adicionados e ainda o efeito na aplicação usando uma nova versão do produto.

## Propósito

Com a evolução das arquiteturas de computadores, ficou cada vez mais difícil comparar a performance de diferentes sistemas de computação somente olhando suas especificações. Por isso, testes foram desenvolvidos para serem feitos em diferentes sistemas, permitindo que esses resultados possam ser comparados entre as diferentes arquiteturas. Por exemplo, enquanto os processadores Pentium 4 geralmente operam a frequências de clock mais altas que os processadores AMD Athlon XP, isso não necessariamente se traduz como maior poder computacional. Em outras palavras, um processador AMD Athlon XP mais lento, quanto a frequência de clock, pode ter um desempenho tão bom nos testes de benchmark quanto um processador Intel Pentium 4 operando a uma frequência mais alta.
Benchmarks são desenvolvidos para usar um determinado tipo de comportamento em um componente ou sistema. Benchmarks "sintéticos" fazem isso através de programas especialmente criados para impor o tipo de comportamento desejado no componente. Em oposição, benchmarks "de aplicação" executam programas do "mundo real" no sistema. Embora normalmente os benchmarks de aplicação ofereçam uma melhor medida para a performance no "mundo real" para um dado sistema, benchmarks sintéticos ainda são usados no teste de componentes individuais, como um disco rígido ou um dispositivo de rede.
Benchmarks são particularmente importantes no design de microprocessadores semicondutores, dando aos arquitetos de processadores a habilidade para mensurar e propor mudanças nas decisões microarquiteturais. Por exemplo, se um benchmark extrai os algoritmos chave de uma aplicação, ele conterá aspectos de performance sensíveis dessa aplicação. Executando isso em um "trecho" muito menor em um simulador com ciclos precisos, podem-se obter pistas de como aumentar a performance do sistema.
Antes de 2000, arquitetos de computadores e microprocessadores usavam SPEC para fazer isso, embora benchmarks de SPEC baseados em Unix eram bastante demorados e, portanto, pesados para usar.