Comparação HashMap e TreeMap


Cá estou eu novamente com meus benchmarks. Tenho procurado extrair a máxima perfomance de todos meu algoritmos em Java, e é exatamente todos os meus testes que quero compartilhar com vocês.

Dessa vez irei testar duas implementações da interface Map. Elas são HashMap e TreeMap.

Como no post anterior, fiz duas Classes, uma implementando HashMap e outra implementando TreeMap, que faziam o seguinte:

Uma iteração que adicionava 1000 registros:
 Java |  copy code |? 
1
2
for(int i=0;i<1000;i++){
3
	mapa.put("chave"+i, "valor"+i);
4
}
5
Uma iteração que concatenava esses 1000 registros em uma String (para testar a velocidade da recuperação dos valores):
 Java |  copy code |? 
1
2
String temp = "";
3
for(int i=0;i<1000;i++){
4
	temp += mapa.get("chave"+i);
5
}
6
Uma iteração que removia os 1000 registros:
 Java |  copy code |? 
1
2
for(int i=0;i<1000;i++){
3
	mapa.remove("chave"+i);
4
}
5

Vamos ver como ficou a comparação:

Benchmark - TreeMap & HashMap

Benchmark - TreeMap & HashMap



Vista a comparação, pudemos observar que se o objetivo for performance o melhor é o HashMap.

Entretanto, esses dois mapas possuem algumas pequenas diferenças.

TreeMap ordena os regitstros à medida em que são inseridos, ou seja, se iterarmos esse mapa já receberemos todos os valores ordenados pela chave.

HashMap não possui ordenação, então os valores ficam todos sortidos na hora da iteração.

TreeMap não aceita como chave um valor nulo.

HashMap aceita como chave um valor nulo.

Com isso acredito que já dá pra tirar um pouco mais de performance do Java.

Até a próxima!





, , ,

  1. Nenhum Comentário ainda.
(não será publicado)