O que é microbenchmark?
abraço a todos!
O que é microbenchmark?
abraço a todos!
É 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í.