boa noite a todos…
alguém sabe quais das estruturas ( int[] ou List ) têm melhor desempenho, considerando que seja preciso fazer: inicializacao, atribuição de um valor aleatório, e atualização de um valor em uma posição aleatório.
eu fiz o teste abaixo e em todos os caso o int[] teve um melhor desempenho, isso é verdade mesmo ou tem algo que deve ser considerado a mais? e em termos de memória o int[] é melhor também?
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class teste {
public static void main(String[] args) {
SimpleDateFormat formata = new SimpleDateFormat("hh:mm:ss");
Date tempo = new Date();
long inicioDoProcessamento;
long fimDoProcessamento;
long inicioDoProcessamentoDosTresTeste;
int valorAleatorio;
Object object;
int[] arg = new int [1000000];
List list = new ArrayList(1);
System.out.println("------------------------------Teste int[ ]-------------------------\n");
//Inicio do teste int[]
tempo= new Date();
inicioDoProcessamentoDosTresTeste = tempo.getTime();
//teste de inicializacao do int[]
tempo= new Date();
inicioDoProcessamento = tempo.getTime();
System.out.println("Teste 1: Inicializacao da estrutura: \n-------");
System.out.println("Começando...: "+formata.format(tempo));
for (int i = 0; i < arg.length; i++)
arg[i] = 0;
tempo= new Date();
fimDoProcessamento = tempo.getTime();
System.out.println("Terminou....: "+formata.format(tempo));
System.out.println("Tempo gasto para do Teste 1 (UM): "+(fimDoProcessamento - inicioDoProcessamento)+"\n");
//teste de Atribuicao de um valor aleatorio no Int[]
//As duas estruturas geram um inteiro aleatorio e um Object
tempo= new Date();
inicioDoProcessamento = tempo.getTime();
System.out.println("Teste 2: Atribuicao de um valor aleatorio: \n-------");
System.out.println("Começando...: "+formata.format(tempo));
for (int i = 0; i < arg.length; i++) {
valorAleatorio=(int) (Math.random()*1000);
object =new Object();
arg[i] = valorAleatorio;
}
tempo= new Date();
fimDoProcessamento = tempo.getTime();
System.out.println("Terminou....: "+formata.format(tempo));
System.out.println("Tempo gasto para o Teste 2(DOIS): "+(fimDoProcessamento - inicioDoProcessamento)+"\n");
//teste de atualizacao de um valor de uma posicao aleatorio do Int[]
tempo= new Date();
inicioDoProcessamento = tempo.getTime();
System.out.println("Teste 3: Atualizacao de um valor de uma posicao aleatorio: \n-------");
System.out.println("Começando...: "+formata.format(tempo));
for (int i = 0; i < arg.length; i++) {
valorAleatorio=(int) (Math.random()*1000);
arg[valorAleatorio] = -1;
}
tempo=new Date();
fimDoProcessamento = tempo.getTime();
System.out.println("Terminou....: "+formata.format(tempo));
System.out.println("Tempo gasto para o Teste 3(TRES): "+(fimDoProcessamento - inicioDoProcessamento));
System.out.println("\n\nTempo para os 3(três) Teste: "+ (fimDoProcessamento-inicioDoProcessamentoDosTresTeste));
System.out.println("\n\n------------------------------Teste List-------------------------\n");
//Inicio do teste da List
tempo= new Date();
inicioDoProcessamentoDosTresTeste = tempo.getTime();
//teste de inicializacao da List
tempo= new Date();
inicioDoProcessamento = tempo.getTime();
System.out.println("Teste 1: Inicializacao da estrutura: \n-------");
System.out.println("Começando...: "+formata.format(tempo));
for (int i = 0; i < arg.length; i++)
list.add("");
tempo= new Date();
fimDoProcessamento = tempo.getTime();
System.out.println("Terminou....: "+formata.format(tempo));
System.out.println("Tempo gasto para do Teste 1(UM): "+(fimDoProcessamento - inicioDoProcessamento));
//teste de Atribuicao de um valor aleatorio na List
//As duas estruturas geram um inteiro aleatorio e um Object
tempo= new Date();
inicioDoProcessamento = tempo.getTime();
System.out.println("\nTeste 2: Atribuicao de um valor aleatorio: \n-------");
System.out.println("Começando...: "+formata.format(tempo));
for (int i = 0; i < arg.length; i++) {
valorAleatorio=(int) (Math.random()*1000);
object =new Object();
list.set(valorAleatorio,object);
}
tempo= new Date();
fimDoProcessamento = tempo.getTime();
System.out.println("Terminou....: "+formata.format(tempo));
System.out.println("Tempo gasto para o Teste 2(DOIS): "+(fimDoProcessamento - inicioDoProcessamento));
//teste de atualizacao de um valor de uma posicao aleatorio da List
tempo= new Date();
inicioDoProcessamento = tempo.getTime();
System.out.println("Teste 3: Atualizacao de um valor de uma posicao aleatorio: \n-------");
System.out.println("Começando...: "+formata.format(tempo));
for (int i = 0; i < arg.length; i++) {
valorAleatorio=(int) (Math.random()*1000);
list.set(valorAleatorio,"A");
}
tempo= new Date();
fimDoProcessamento = tempo.getTime();
System.out.println("\nTerminou....: "+formata.format(tempo));
System.out.println("Tempo gasto para o Teste 3(TRES): "+(fimDoProcessamento - inicioDoProcessamento));
System.out.println("\nTempo para os 3(três) Teste: "+ (fimDoProcessamento-inicioDoProcessamentoDosTresTeste));
}
}