Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Não obtive os mesmo resultados descritos na resposta do exercício.

package br.com.empresa.banco.conta;

import java.util.Collection;
import java.util.HashSet;

public class TestaPerformance {

    public static void main(String[] args) {

        System.out.println("Iniciando..");

        Collection<Integer> teste = new HashSet<Integer>();

        long inicio = System.currentTimeMillis();

        int  total = 50000;

        for(int i=0; i < total; i++){
            teste.add(i);
        }
        long inclusao = System.currentTimeMillis();
        System.out.println("Tempo gasto na inserção: " + inclusao);

        for (int i = 0; i < total; i++){
            teste.contains(i);
        }

        long busca = System.currentTimeMillis();
        System.out.println("Tempo gasto na busca: " + busca);

        long fim = System.currentTimeMillis();
        long tempo = fim - inicio;

        System.out.println("Tempo gasto para a inclusão dos 30.000 registros foi de: " + tempo);

    }
}

//Com o código acima obtive os seguintes resultados

50.000 registros

ArrayList

Iniciando.. Tempo gasto na inserção: 1480673918914 Tempo gasto na busca: 1480673920243 Tempo gasto para a inclusão dos 30.000 registros foi de: 1334

HashSet

Iniciando.. Tempo gasto na inserção: 1480673968084 Tempo gasto na busca: 1480673968095 Tempo gasto para a inclusão dos 30.000 registros foi de: 30

4 respostas

Oi Diogo, o seu código está bem diferente do exercício.. vc não está tirando a diferença nos outros passos.. o único lugar onde vc vê a diferença é no fim mesmo e aí o hashset foi mais rápido, por conta da busca.

Olá Diogo,

para você ver quanto tempo gasta para inserir você precisa fazer a diferença entre o valor da variável inclusao com o valor do inicio. No caso para saber a busca, precisa fazer a diferença entre a variável busca com a variável inclusao.

solução!

Boa noite Diogo. Dê uma olhada no código das diferenças de tempo que implementei, acho que te ajudaria, boa sorte. :)

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;

public class TestaPerformance {

    public static void main(String[] args) {

        System.out.println("Iniciando...");
//        Collection<Integer> teste = new ArrayList<>();
        Collection<Integer> teste = new HashSet<>();
        long inicio = System.currentTimeMillis();

        int total = 100000;

        for (int i = 0; i < total; i++) {
            teste.add(i);
        }

        long aposInserir = System.currentTimeMillis();
        long tempoInserir = aposInserir - inicio;
        System.out.println("Tempo gasto para inserir: " + tempoInserir);

        for (int i = 0; i < total; i++) {
            teste.contains(i);
        }
        long aposComparar = System.currentTimeMillis();
        long tempoComparar = aposComparar - aposInserir;
        System.out.println("Tempo gasto para comparar: " + tempoComparar);

        long fim = System.currentTimeMillis();
        long tempo = fim - inicio;

        System.out.println("Tempo total gasto: " + tempo);

    }

}

Muito obrigado a todos. Realmente ao realizar a diferença entre o inicio e o termino da inclusao, verifiquei que ao se tratar de inclusão o "ArrayList" é mais rápido, porém na busca o "HashSet" é muito mais rápido.

ArrayList Iniciando.. Tempo gasto na inserção: 12 Tempo gasto na busca: 1480971753319 Tempo gasto na comparação: 4656 Tempo gasto para a inclusão e consulta dos 30.000 registros foi de: 4668

HashSet Iniciando.. Tempo gasto na inserção: 38 Tempo gasto na busca: 1480971876425 Tempo gasto na comparação: 24 Tempo gasto para a inclusão e consulta dos 30.000 registros foi de: 62