1
resposta

Velocidade de busca - valores próximos? HELP

Boa tarde, na task https://cursos.alura.com.br/course/java-collections/task/14195 diz para testarmos separadamente a velocidade de busca colocando o currentTimeMillis em cada laço for, assim fiz, mas os números não parecem certos, até pq no código original sem minhas modificações aparecia mais de 1600 milisegundos, e com minha modificação ficou em 16 no hashset e 15 no arraylist???

Código abaixo:

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

                long inicio = System.currentTimeMillis();
                long fim = 0, fim1 =0 ;
                for (int i = 1; i <= 50000; i++) {
                    numeros.add(i);

                }
                fim = System.currentTimeMillis();
                long tempoDeExecucao = fim - inicio;
                long inicio1 = System.currentTimeMillis();
                for (Integer numero : numeros) {
                    numeros.contains(numero);
                    fim1 = System.currentTimeMillis();
                }
                 fim1 = System.currentTimeMillis();
                //long fim = System.currentTimeMillis();

                long tempoDeExecucao1 = fim1 - inicio1;

        System.out.println("Tempo gasto: " + tempoDeExecucao);
        System.out.println("Tempo gasto1: " + tempoDeExecucao);
1 resposta

Ola Jade.

Notei que o final da saida, você não está mostrando o tempoDeExecucao1, que seria o tempo da leitura.

Coloquei aqui e os resultados ficaram aproximados ao original

    Collection<Integer> numeros = new ArrayList<>();

    long inicio = System.currentTimeMillis();
    long fim = 0, fim1 = 0;

    for (int i = 1; i <= 50000; i++) {
        numeros.add(i);
    }

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

    long inicio1 = System.currentTimeMillis();
    for (Integer numero : numeros) {
        numeros.contains(numero);
    }
    fim1 = System.currentTimeMillis();
    long tempoDeExecucao1 = fim1 - inicio1;

    System.out.println("Tempo gasto: " + tempoDeExecucao);
    System.out.println("Tempo gasto1: " + tempoDeExecucao1);