Olá pessoal, apesar de estar muito ocupado por esses últimos dias, estou tentando não me manter afastado do blog por muito tempo. Esses últimos dias, li uns artigos legais do meu amigo Túlio Castro sobre a performance em iteradores e performance com Strings. Juntamente com isso, na empresa onde trabalho tive que reformular um código que estava demorando um tempinho a mais.
Consegui melhorar bastante, mas sei que ainda pode melhorar mais. Nesse código eu usava muitas listas do tipo LinkedList, e foi então que decidi fazer alguns testes para compará-la com a ArrayList.
Fiz duas classes muito simples, uma usando LinkedList e outra usando ArrayList, que basicamente faziam o seguinte:
Uma iteração que adicionava 1000000 (um milhão) de registros na lista
Outra iteração que removia 1000 registros da lista
E por fim uma iteração simples na lista. Fiz esse teste uma série de vezes e tirei a média.
O resultado foi o seguinte:
Então o que pude concluir foi que, para a simples manipulação de dados, inserção e iteração, o melhor a fazer é usar ArrayList. Agora, se for modificar o conteúdo da lista, como excluir registros, o melhor é usar LinkedList.
Este foi um post rápido mas que espero que seja de grande utilidade a todos.
Até a próxima!
Consegui melhorar bastante, mas sei que ainda pode melhorar mais. Nesse código eu usava muitas listas do tipo LinkedList, e foi então que decidi fazer alguns testes para compará-la com a ArrayList.
Fiz duas classes muito simples, uma usando LinkedList e outra usando ArrayList, que basicamente faziam o seguinte:
Uma iteração que adicionava 1000000 (um milhão) de registros na lista
| Java | | copy code | | ? |
| 1 | |
| 2 | for(int i=0;i<=1000000;i++){ |
| 3 | lista.add(i); |
| 4 | } |
| 5 |
Outra iteração que removia 1000 registros da lista
| Java | | copy code | | ? |
| 1 | |
| 2 | for(int i=0;i<=1000;i++){ |
| 3 | lista.remove(i); |
| 4 | } |
| 5 |
E por fim uma iteração simples na lista. Fiz esse teste uma série de vezes e tirei a média.
| Java | | copy code | | ? |
| 1 | |
| 2 | for(Integer numero:lista){ |
| 3 | numero = numero; |
| 4 | } |
| 5 |
O resultado foi o seguinte:
Então o que pude concluir foi que, para a simples manipulação de dados, inserção e iteração, o melhor a fazer é usar ArrayList. Agora, se for modificar o conteúdo da lista, como excluir registros, o melhor é usar LinkedList.
Este foi um post rápido mas que espero que seja de grande utilidade a todos.
Até a próxima!




#1 by Túlio Castro on 15 de Maio de 2010 - 10:37
Agora mais uma curiosidade para ajudar nesse post,
se você mudar para 30 mil registros, ou mais, esse tempo vai passar para alguns segundos, certo ?
Agora mude de ArrayList para HashSet, que você vai ver a diferença.
Abraço muito bom post.
#2 by Maurício Faustino on 18 de Maio de 2010 - 11:45