Bonjour,

j'ai réalisé un tri en java, et je veux étudier les perfomance de ce tri.

Ainsi je réalise des tests :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
for(int i=0;i<10;i++){
	Tri test=new Tri();
	dateD=Calendar.getInstance();
	test.tri3(0,test.taille,2,test.moyenne(0,test.taille-1));
	dateF=Calendar.getInstance();
	double temps=dateF.getTimeInMillis()-dateD.getTimeInMillis();
	System.out.println(temps);		
}
En gros ça donne ça, avec différents paramètre de taille de la liste.

Ce que je ne comprend pas, c'est que les résultats sont les suivants :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
3250.0
766.0
765.0
578.0
578.0
578.0
593.0
578.0
578.0
594.0
Au delà de l'algorithme, est-ce que la machine garde en mémoires certaines choses pour aller plus vite lors d'une nouvelle exécution ?
J'ai l'impression que mes tests sont indépendants !

Pour info, je génère à chaque fois une nouvelle liste avec des double aléatoire (du moins j'espère ^^) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
public Tri(){
	Calendar date;
	Random rand=new Random();
	liste=new double[taille];
	for(int i=0;i<taille;i++){
		date=Calendar.getInstance();
		rand.setSeed((long)(date.getTimeInMillis()*Math.random()));
		liste[i]=rand.nextDouble();
	}
}
Quelqu'un a une explication ?

Merci