Microbenchmark

2 respostas
matheus306

O que é microbenchmark?

abraço a todos!

2 Respostas

nbluis

http://pt.wikipedia.org/wiki/Benchmark_(computa%C3%A7%C3%A3o)

ViniGodoy

É um teste de performance simples. Geralmente não funciona para nada, já que não cobre uma situação real de uso. Um exemplo é isso aqui:

//Vamos testar se é mais rápido equals ou compare to:
public class Teste {
   public static void main(String[] args) {
          long before = System.currentTimeMillis();
          for (int i = 0; i < 1000000; i++) {
                 "Vinícius".equals("Matheus");
          }
          System.out.println("Tempo do equals: " + (System.currentTimeMillis() - before));

          before = System.currentTimeMillis();
          for (int i = 0; i < 1000000; i++) {
                 "Vinícius".compareTo("Matheus");
          }
          System.out.println("Tempo do compareTo: " + (System.currentTimeMillis() - before));
   }
}

Esse teste, apesar de parecer testar alguma coisa, neglicencia vários aspectos:
1. Ele despreza caches locais e otimizações da VM;
2. Ele despreza um espaço amostral significativo. Na prática, nem toda string 1 é Vinícius e nem toda string 2 é Matheus;
3. Ele despreza eventuais fatores constantes;
4. Ele despreza as situações reais de uso.

Um microbenchmark bem feito é complicado de fazer. Para mais informações leia o testo http://www.ibm.com/developerworks/java/library/j-jtp02225.html"">Anatomy of a flawled microbenchmark do Brian Goetz.

Os resultados são ainda menos confiáveis com microbenchmarks entre linguagens diferentes. Não é a toa que vc acha textos por aí que comprovam que C++ é mais rápido que Java, e vice-versa.

Então, fique atento! E não confie em qualquer coisa por aí.

Criado 21 de julho de 2008
Ultima resposta 21 de jul. de 2008
Respostas 2
Participantes 3