Qual das estrutudas (int[] e List) apresenta melhor desempenho

1 resposta
W

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));
	}
}

1 Resposta

W

foi mal pessoal, a mensagem duplicou.

como eu faço para tirar uma delas

Criado 26 de julho de 2006
Ultima resposta 26 de jul. de 2006
Respostas 1
Participantes 1