Nós somos constantemente bombardeado por resultados de benchmarks, usados para comparar tanto navegadores de Internet quanto serviço de telefonia celular. Mas se os benchmarks não forem feitos corretamente, os resultados saem errados ou enganosos. Eis o que é necessário em um excelente benchmark e como fazer o seu próprio.

 

Por que os benchmarks interessam?

Os benchmarks geralmente medem o desempenho de gargalhos no seu sistema. Os benchmarks do seu carro medem sua velocidade, frenagem e raio de curvatura. Benchmarks da sua escova de dentes mecânica medem a percentagem de placas capaz de remover dos seus dentes. Conforme você tenta testar sistemas cada vez mais complexos, fica cada vez mais difícil criar benchmarks precisos. Nos dias de hoje, os computadores podem vir a ser bastante difíceis de testar com precisão.

No papel, gerar um bom benchmark parece ser simples – deve ser um teste quantitativo que mede algo de útil, fornece resultados corretos e produz resultados semelhantes quando repetidos em circunstâncias semelhantes. No entanto, no mundo real, pode vir a ser difícil encontrar um teste que se encaixe em todos estes três critérios. E pior, é relativamente fácil para qualquer um com más intenções alterar as variáveis iniciais o suficiente para manipular os resultados de um benchmark. Neste ponto é mais importante do que qualquer outra coisa você saber a diferença entre benchmarks bons e ruins – especialmente se você quer evitar ser enganado.

Existem dezenas de exemplos de contorções de benchmark na última década, mas eu escolherei o da Nvidia. Em 2008, a Nvidia notoriamente comunicou que as CPUs de alto padrão quad-core eram um exagero e que a GPU seria capaz de fazer tudo o que faz a CPU, só que melhor e mais rápido. Como frequentemente acontece, houve até uma demonstração para comprovar o ponto deles. A Nvidia exibia um aplicativo de transposição de vídeo que usava a potência das GPUs Nvidia para converter vídeos 19x mais rapidamente que uma CPU quad-core. No entanto, o aplicativo usado no lado da CPU da comparação era capaz de utilizar um único núcleo da CPU, uma situação incomum para aplicativos de conversão de vídeo até mesmo na época. Quando o exato mesmo teste era feito usando um software padrão da indústria que fosse capaz de usar todos os quatro núcleos da CPU, a diferença de desempenho era bem menos drástica. Assim, apesar de a Nvidia ter criado um benchmark que de fato funcionasse, os resultados não eram indicativos do desempenho real que as pessoas no mundo real teriam.

O Laboratórios vs. O Mundo Real

Existem dois tipos básicos de benchmarks: sintéticos e de mundo real. Apesar de termos a tendência de preferir os benchmarks de mundo real do Maximum PC (onde sou editor-chefe), ambos os tipos de testes têm seu devido uso. Os benchmarks de mundo real são bastante simples e diretos – são testes que imitam o fluxo de trabalho de um mundo real, geralmente usando aplicativos (ou jogos) comuns em uma ambientação comum ao usuário médio. Por outro lado, benchmarks sintéticos são artifícios geralmente usados para medir partes específicas de um sistema. Por exemplo, benchmarks sintéticos permitem que você meça a velocidade de atualização de pixels de um display ou a audácia computacional de ponto flutuante de uma CPU. No entanto, o perigo de se basear em benchmarks sintéticos é que eles podem não medir diferenças que um usuário de fato experimentaria.

Vejamos as velocidades de interface de discos rígidos, por exemplo. Benchmarks sintéticos da interface SATA de primeira geração mostravam um canal veloz entre discos rígidos SATA e restante do sistema – a conexão testada em torno de 150MB/s. Quando o SATA de 3Gbps de segunda geração foi introduzido, os testes mostravam que ele tinha o dobro da velocidade, oferecendo em torno de 300MB/s de banda para cada disco. No entanto, não era correto dizer que discos equipados com SATA 3Gbps eram o dobro da velocidade dos seus irmãos SATA de primeira geração? E por que não? No mundo real, aquela velocidade extra não importava. Se você testasse dois discos idênticos e habilitasse o SATA 3Gbps em um e desabilitasse no outro, você notaria uma diferença mínima – se notasse alguma – de desempenho. Os discos rígidos mecânicos da época não eram capazes de preencher nenhum dos canais até o limite da capacidade – um teto mais alto não significa nada quando ninguém está batendo a cabeça no teto (atualmente, discos SSD e até mesmos os discos mecânicos maiores são capazes de saturar até mesmo um SATA 3Gbps, mas isto é tópico para outro post).

Assim, benchmarks de mundo real são perfeitos, certo? Não necessariamente. Vejamos o script de Photoshop que rodamos no Maximum PC para medir o desempenho do sistema. Nós montamos um extenso script de Photoshop usando dezenas das ações e filtros mais comuns, depois medimos o tempo que levava para executar o script em determinada foto usando um cronômetro. Trata-se de um teste relativamente simples, mas ainda há bastante espaço para burlá-lo. Nós poderíamos usar um arquivo de imagem que fosse muito menor ou maior do que você obteria normalmente com uma câmera digital. Se nós rodássemos o script com um JPEG de 128kb ou um TIFF de 2GB, ele mediria algo diferente do que se o fizesse usando o arquivo RAW de 15MB que de fato usamos para o teste.

Ou seja, como saber se o nosso benchmark de Photoshop está fornecendo os resultados corretos? Nós o testamos, oras! Primeiramente, nós rodamos o benchmark diversas vezes em diversas configurações diferentes de hardware, mexendo cada variável relevante em cada configuração. Dependendo do benchmark, nós testamos diferentes velocidades de memória, quantidade de memória, arquitetura de CPU, velocidade de CPU, arquitetura de GPU, configuração de memória GPU, discos rígidos de diferentes velocidades e muito mais; depois analisamos os resultados para vermos quais diferenças afetaram o benchmark e quanto que afetou.

Mas, ao compararmos os nossos resultados com as alterações que fizemos e com outros testes reconhecidamente bons, nós somos capazes de determinar precisamente o que um benchmark em particular mede. No caso do nosso script de Photoshop, tanto cálculos que exigem muito da CPU quanto leituras do disco rígido são capazes de alterar os resultados. Com duas variáveis afetando o resultado, nós sabemos que mesmo que o teste seja bastante valioso, ele não é, por si só, definitivo. Este é um conceito importante: nenhum benchmark o informará tudo de que você precisa saber sobre o desempenho de um sistema complexo.

 

Fazendo o seu próprio benchmark de Photoshop

Quando você se acostumar com isso, nunca será uma má ideia rodar os seus próprios benchmarks regularmente. Isto ajudará você a monitorar a sua máquina para certificar-se de que o seu desempenho não está se degradando com o tempo e, se você acrescentar algum upgrade, isto o ajudará a enxergar se estão de fato fazendo alguma coisa. Só não se esqueça de rodar alguns testes quando o seu computador for novo (e teoricamente tendo o máximo de desempenho) ou antes de trocar uma nova RAM ou um novo HDD ou outras peças. Se você se esquecer disto, você não terá um ponto de partida com o qual comparar os resultados futuros.

Se você não tiver um conjunto caro de testes como o MobileMark ou o 3DMark, não esquenta a cabeça. Se você tiver um aplicativo que você usa regularmente e que seja capaz de registrar e reproduzir macros ou scripts, como o Photoshop, você pode montar um script que inclua as atividades que você usa com frequência. Nós rodamos uma fotografia de 10MP por uma série de filtros, rotações e redimensionamentos que frequentemente usamos como um dos nossos benchmarks regulares de testes de sistema no Maximum PC.

Para gerar o seu próprio, abra o Photoshop e carregue a sua imagem. Depois vá em Janelas → Ação, clique na seta pra baixo na paleta para selecionar Nova Ação. Dê nome a ela e clique em Gravar, depois continue para atravessar o seu arquivo pelas suas mutações miscelâneas. Lembre-se sempre de voltar para o arquivo original entre cada passo e execute a ação final como sendo o fechamento de um arquivo, assim fica fácil saber quando um benchmark foi completado. Coloque na fila um monte de ações: como regra geral, você vai querer que o script completo leve pelo menos dois minutos pra rodar – quanto mais tempo levar, menos importantes serão as pequenas imprecisões do seu cronômetro. Quando você tiver acabado de atribuir ações e fechado o arquivo, clique no botão Parar na paleta de ações para finalizar o seu script.

Quando tiver terminado, certifique-se de que a sua nova ação está realçada, depois clique novamente na seta pra baixo do menu dentro da paleta de Ação e selecione Opções de Ação. Designe uma tecla de função, que permitirá que você dê início ao seu benchmark apertando um atalho no teclado (nós usamos F2). Depois, abra novamente o menu da paleta de Ação e selecione Opções de Reprodução. Configure para ser Passo a Passo e desmarque a opção “Pause for Audio Annotation”. Quando isto tiver terminado, prepare o seu cronômetro (a maior parte dos celulares já vem com um, caso você não seja um técnico de atletismo). Carregue a sua imagem, depois simultaneamente dê a partida no seu cronômetro e aperte o atalho no teclado que você acabou de selecionar. Pare o cronometro quando o arquivo se fechar. Nós geralmente rodamos este tipo de teste três vezes para minimizar o erro humano que introduzimos ao manualmente cronometrarmos o teste. Se você quiser tentar o mesmo script que usamos no Maximum PC, você pode baixá-lo aqui.

 

Benchmarks de jogo

Além disso, se você for um gamer, há toneladas de jogos com benchmarks embutidos. Eles ajudam você a saber quais configurações se deve rodar nos jogos para maximizar a qualidade da imagem sem sacrificar a framerate, além de medir o impacto do uso na velocidade geral do seu computador.

Veja o benchmark do Resident Evil 5, que inclui tanto modos para DirectX 9 e DirectX 10. Rodar este teste é fácil – basta instalá-lo e selecionar o modo DirectX 9 ou DirectX 10 (lembre-se, você precisará de uma placa de vídeo da série Radeon 4800 ou mais recente ou uma GeForce 8800 ou mais recente e rodar sob Vista ou Windows 7 para usar o modo DirectX 10). Se você quiser comparar o desempenho ao longo de um período de tempo, nós recomendamos o teste fixo, ele é simplesmente mais repetível. Se você está tentando verificar quais configurações usar, o modo variável não é tão consistente, mas exibe o jogo rodando de fato, o que será mais representativo da sua experiência em jogo. Quando você estiver dentro do jogo, você vai querer fazer a modificação para a resolução nativa da sua tela plana e rodar um teste do seu benchmark. Para um jogo singleplayer, nós gostamos de selecionar configurações que minimizem as quedas de framerate para abaixo de 30fps. Para jogos multiplayer, nós sacrificamos a qualidade da imagem em prol da velocidade e estabelecemos a meta de 60fps. Afinal, queda nas frames em um shooter deathmatch só fará com que você morra com mais frequência.

 

O desfecho prático

Como ocorre com tudo, existem benchmarks bons e benchmarks ruins. No entanto, não há absolutamente nada de misterioso sobre como o benchmarking deve funcionar. Para saber se você pode confiar nos benchmarks que você lê online, você precisa saber exatamente o que está sendo testado – como o cenário se inicia, quais variáveis são alteradas e exatamente o que está sendo medido. Se você não puder dizer com segurança que um teste está sendo executado de maneira justa e correta, faça perguntas ou tente duplicar você mesmo os testes. E quando alguém não quer compartilhar a sua metodologia de teste? Estes casos sempre são um tanto suspeitos para mim. 

 

Will Smith é o editor-chefe do Maximum PC, não o famoso rapper/ator. Seu trabalho aparece em diversas publicações, incluindo Maximum PCWiredMac|Life, e T3, e na no Maximum PC e Ars Technica. Ele é autor do livro The Maximum PC Guide to Building a Dream PC.