Améliorer le temps d'1 fonction de tri [JAVA]
romain_natiez
Messages postés
179
Statut
Membre
-
Joshua -
Joshua -
Bonjour à tous,
Je suis actuellement entrain de travailler sur une fonction de tri en java déjà existante, le java n'étant pas ma spécialité, j'ai quand même réussi à transformer une fonction de tri par ordre alphabétique en fonction de tri par numéro(vive le net et la doc!)
Mais comme cette fonction traite plusieurs milliers d'enregistrements et que cela prend au moins 5 à 8 minutes, j'aurai voulu savoir s'il était possible d'améliorer cette fonction que voici :
for (int y = 0;y<adocs.length;y++) {
for (int x = 0;x<adocs.length-y-1;x++) {
Document temp1 = (Document) adocs[x];
Document temp2 = (Document) adocs[x+1];
String temp3 = temp1.getItemValueString("Requete");
a = temp3.lastIndexOf("-")+1;
b = temp3.length();
temp3 = temp3.substring(a,b);
Integer temp5 = new Integer(temp3);
int temp7 = temp5.intValue(); String temp4 = temp2.getItemValueString("Requete");
a = temp4.lastIndexOf("-")+1;
b = temp4.length();
temp4 = temp4.substring(a,b);
Integer temp6 = new Integer(temp4);
int temp8 = temp6.intValue();
if (temp8 < temp7)
{adocs[x] = temp2;
adocs[x+1] = temp1;
}
}
}
J'avais déjà fait une fonction de tri en VB il y a bien longtemps et qui était optimisée pour prendre le moins de temps possible mais pas moyen de me rappeler le truc :-(
Si quelqun à la solution je lui en serait très reconnaissant !
Merci d'avance à vous tous !!
Je suis actuellement entrain de travailler sur une fonction de tri en java déjà existante, le java n'étant pas ma spécialité, j'ai quand même réussi à transformer une fonction de tri par ordre alphabétique en fonction de tri par numéro(vive le net et la doc!)
Mais comme cette fonction traite plusieurs milliers d'enregistrements et que cela prend au moins 5 à 8 minutes, j'aurai voulu savoir s'il était possible d'améliorer cette fonction que voici :
for (int y = 0;y<adocs.length;y++) {
for (int x = 0;x<adocs.length-y-1;x++) {
Document temp1 = (Document) adocs[x];
Document temp2 = (Document) adocs[x+1];
String temp3 = temp1.getItemValueString("Requete");
a = temp3.lastIndexOf("-")+1;
b = temp3.length();
temp3 = temp3.substring(a,b);
Integer temp5 = new Integer(temp3);
int temp7 = temp5.intValue(); String temp4 = temp2.getItemValueString("Requete");
a = temp4.lastIndexOf("-")+1;
b = temp4.length();
temp4 = temp4.substring(a,b);
Integer temp6 = new Integer(temp4);
int temp8 = temp6.intValue();
if (temp8 < temp7)
{adocs[x] = temp2;
adocs[x+1] = temp1;
}
}
}
J'avais déjà fait une fonction de tri en VB il y a bien longtemps et qui était optimisée pour prendre le moins de temps possible mais pas moyen de me rappeler le truc :-(
Si quelqun à la solution je lui en serait très reconnaissant !
Merci d'avance à vous tous !!
A voir également:
- Améliorer le temps d'1 fonction de tri [JAVA]
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Fonction si et - Guide
- Comment faire un tri personnalisé sur excel - Guide
- Waptrick java voiture - Télécharger - Jeux vidéo
3 réponses
Salut,
En fait ça dépend pas mal de ce que tu cherches à trier, si c'est déjà plus ou moins ordonné ou non par exemple.
Il existe difféerentes méthode, apparement tu utilises le "tri bulle" si j'ai bien compris (faire remonter la première valeur en tête et ainsi de suite), il existe également le tri fusion qui donne de meilleure résultat (tu coupes le tableaux en deux parties que tu tries en coupant en deux parties...quand tu as un élément ton tableau et ordonné et après tu "merges" tes deux tableaux.
Qui va en mer pour son plaisir,
irait en enfer pour ses vacances
En fait ça dépend pas mal de ce que tu cherches à trier, si c'est déjà plus ou moins ordonné ou non par exemple.
Il existe difféerentes méthode, apparement tu utilises le "tri bulle" si j'ai bien compris (faire remonter la première valeur en tête et ainsi de suite), il existe également le tri fusion qui donne de meilleure résultat (tu coupes le tableaux en deux parties que tu tries en coupant en deux parties...quand tu as un élément ton tableau et ordonné et après tu "merges" tes deux tableaux.
Qui va en mer pour son plaisir,
irait en enfer pour ses vacances
Je vais regarder le temps que prend mon programme avec et sans la fonction de tri c'est peut être un problème de serveur surchargé...
Merci à tous
Merci à tous
déja, sans regarder l'algo je dirais que ton code est très lourd ! je m'explique : évite de créer et de détruire tes objets à chaque boucle mais essaye de réutiliser tes objets !
ex :
Document temp1 = null;
for (int y = 0;y<adocs.length;y++) {
for (int x = 0;x<adocs.length-y-1;x++) {
temp1 = (Document) adocs[x];
comme ça, la machine virtuelle ne va pas supprimer et réallouer un nouvel objet à chaque fois.
ex :
Document temp1 = null;
for (int y = 0;y<adocs.length;y++) {
for (int x = 0;x<adocs.length-y-1;x++) {
temp1 = (Document) adocs[x];
comme ça, la machine virtuelle ne va pas supprimer et réallouer un nouvel objet à chaque fois.