A idéia do projeto é bem simples, rodar um conjunto operações complexas n vezes e comparar os processadores.
As operações são:
- logl(37.61)
- sinl(2.45)
- cosl(0.26)
- sqrtl(7.33)
- 2.57/7.77
- expl(3.95)
São operações simples, mas a idéia era rodar essas expressões n vezes em aproximadamente 2 minutos. Para isso, fica uma dúvida: Se rodarmos em uma máquina rápida ela levará um tempo para executar esse conjunto de operações, mas se rodarmos em uma máquina lenta ela levará um tempo maior para o processamento. Então, como vamos saber quantas vezes rodar esse conjunto de instruções?
Parece uma questão simples de ser resolvida, colocamos um while e dizemos que enquanto o tempo for menor que 2 minutos executa, se for maior pára. Beleza, mas ficar parando o processamento a todo o momento para ver se já atingimos 2 minutos é um custo alto a se pagar quando medimos processamento porque ele pára o processamento para requisitar o relógio.
Para resolver esse problema usamos o critério de calibração. Esse critério roda um número X de vezes esse conjunto de expressões e calcula quanto tempo ele levou pra isso. Com base no tempo que esse número X de vezes rodou, calculamos então quantas vezes podemos rodá-la novamente para atingirmos um tempo aproximado a 2 minutos.
Bem interessante essa calibração. Imaginem que temos uma máquina lenta e ela roda a calibração em 3 segundos e uma máquina rápida que roda a calibração em 1 segundo. Nosso programa se adapta a esse tempo e roda menos vezes para uma do que para outra, levando sempre em consideração os dois minutos. Se não usássemos a calibração a máquina rápida poderia rodar N vezes um conjunto de instruções em 1 minuto e a máquina lenta rodar em 3 minutos. Usando pouco tempo não faz diferança, mas se pensarmos em horas fica complicado, uma máquina roda em 5 horas a outra em 15.
Esse benchmark eu fiz na linguagem C++ e disponibilizei o código em: http://quinho.googlepages.com/bench_marcos.cpp
O programa compilado está em: http://quinho.googlepages.com/bench_marcos.zip
Se tiverem alguma sujestão ou dúvida é só comentar.
Nenhum comentário:
Postar um comentário