Obrigado por visitar a devmedia.com.br!

Precisamos de você para divulgar nossos vídeos e cursos gratuitos para a comunidade.

Se você gosta da devmedia.com.br por favor dê-nos o seu clique para o Google+ e ajude outros desenvolvedores ao redor do mundo.



Obrigado por seu apoio!
Equipe DevMedia

sair sem compartilhar (x)
DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:

  #Este é um post fechado

Este post está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia. Clique aqui para saber mais sobre como abrir este post!



Artigo Java Magazine 71 - Java Collections Framework

Conhecendo o desempenho das suas estruturas de dados Aprenda como medir o desempenho das classes contidas na Java Collections Framework e escolher a mais eficiente para cada tarefa






BRK##: 39 - 38

Java Collections Framework

Conhecendo o desempenho das suas estruturas de dados

Aprenda como medir o desempenho das classes contidas na Java Collections Framework e escolher a mais eficiente para cada tarefa

 

De que se trata o artigo:

Análise empírica das estruturas de dados do Java Collections Framework, de acordo com as operações de inserção, busca e remoção. Neste artigo, fala-se da implementação de um benchmark para fazer a medição de desempenho das principais classes das interfaces List, Set e Map.

 

Para que serve:

Visa mostrar ao leitor qual a melhor estrutura de dados a ser utilizada de acordo com uma operação. Para isso é utilizado um software matemático chamado Octave, o qual é ideal para operações algébricas e para gerar gráficos através de programação.

 

Em que situação o tema é útil:

O conhecimento do desempenho das estruturas de dados visa melhorar o tempo de execução dos seus próximos programas. Toda estrutura possui pontos fortes e fracos: o segredo é saber balancear esses pontos para se obter um bom desempenho em programas complexos.

 

Java Collections Framework:

O Java Collections Framework contém estruturas de dados pré-empacotadas, bem como algoritmos para sua manipulação, oferecendo excelente desempenho com maximização da velocidade de execução e minimização do consumo de memória. O estudo de estruturas de dados é essencial para que seja desenvolvido um programa com bom desempenho.

Neste artigo foi realizado um estudo empírico para averiguar quais estruturas desse framework apresentam os melhores desempenhos em uma dada operação. Para isso fizemos a implementação de um benchmark para a análise de desempenho das estruturas, sendo analisadas as operações de inserção, busca e remoção de elementos.

 

Veremos uma abordagem prática sobre o framework de coleções em Java. Os quesitos de avaliação são inserção de dados, busca e remoção, os quais serão explorados de forma empírica, investigando o desempenho de cada tipo de coleção. A implementação desses testes e os resultados obtidos permitirão ao leitor conhecer de forma mais concreta e prática as características das collections, cujo uso adequado pode ser importante para o bom desempenho da maioria das aplicações.

 

Introdução ao framework de coleções em Java

O framework de coleções em Java (Java Collections Framework) possibilita o uso e extensão de estruturas de dados comuns de forma fácil e flexível. Com pouco esforço é possível implementar listas, conjuntos, mapas e outros containers de objetos ersos para atender às várias finalidades das suas aplicações.

Este framework contém estruturas de dados pré-empacotadas, bem como algoritmos para sua manipulação, oferecendo aos programadores excelente desempenho com maximização da velocidade de execução e minimização do consumo de memória.

Muitas das operações inerentes às coleções são executadas sem intervenção dos programadores, como por exemplo, impedir elementos repetidos em conjuntos e organizar a ordem dos objetos armazenados em mapas, listas e conjuntos.

A referência deste framework pode ser encontrada na documentação da Java SE 6: java.sun.com/javase/6/docs/technotes/guides/collections/.

 

Para conhecer melhor o framework de coleções do Java, veja mais informações sobre as interfaces Collection, Set, List, SortedSet, Map e SortedMap.

 

Descrição da implementação

Comparamos as principais implementações das interfaces List, Set e Map. Para List, selecionamos as classes ArrayList, Vector e LinkedList; para Set, HashSet, LinkedHashSet e TreeSet; e para Map, HashMap, LinkedHashMap e TreeMap.

Para medir o desempenho das estruturas de cada grupo, começamos criando conjuntos de dados aleatórios. Após isso, medimos os tempos de inserção desses dados nas estruturas, medimos os tempos de busca de 100 elementos aleatórios contidos em cada estrutura. Depois, medimos os tempos de remoção de todos os dados das estruturas. Os tempos de execução de cada etapa são medidos e guardados em arquivos com a extensão .dat. Tais arquivos são processados pelo software Octave (www.octave.org) e os gráficos são gerados.

A Listagem 1 mostra o código referente à geração de números aleatórios. Note que usamos o método Set.contains() para detectar números já gerados e evitar repetições.

< style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; PADDING-LEFT: 0cm; PADDING-BOTTOM: 1pt; BORDER-LEFT: medium none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-border-bottom-alt: solid windowtext .5pt; mso-element: para-border-">

 

Listagem 1. Método para gerar números aleatórios e não-repetidos

public String gerarNumerosAleatorios(int n, int max) {

  HashSet<Integer> HS = new HashSet<Integer>();

  int valor=0;

  StringBuilder sb = new StringBuilder();

  Random Gerador = new Random();              



ATENÇÃO! A exibição deste artigo foi interrompida.


  #Este é um post fechado

Este post está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia. Clique aqui para saber mais sobre como abrir este post!







    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!



[Este post ainda não foi associado a uma sequência]
Autor
Celso André Rodrigues De Souza

Estudante de graduação em Ciência da Computação na Universidade Federal de São Paulo, UNIFESP. Fez iniciação científica no Instituto Nacional de Pesquisas Espaciais, INPE, na área de mineração de dados e sistemas de decisão voltados para a Web. Possui as certificações SCJA e SCJP 6.


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
0   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]
Este post está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia.

  Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!

Plano conveniência – Neste plano este post custa R$ 4,90 (Compre agora)
Esse plano permite que você compre somente um post, pagando por ele seu preço sem desconto.

Plano ocasional: Aqui este post custa: R$ 1,96 (assinante) ou R$ 2,45 (não-assinante)
Este plano é ideal para quem tem interesse em mais de um post. Você compra um mínimo de R$ 50,00 em créditos e ganha, em média, 50% de desconto no preço do post. Compre Créditos agora!

Assinatura de Créditos (Plano econômico) – Aqui este post custa R$ 1,47
Este plano é ideal para quem tem interesse em muitos posts. Com esse plano você compra R$ 180,00 em créditos e ganha, em média, 80% de desconto no preço do post. Assine este plano agora!

> Saiba mais sobre o Sistema de Créditos DevMedia
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03