Bonjour à tous! Je vais essayer d'être la plus précise possible : J'ai des fichiers .txt que je dois parcourir, lire, et avec les informations lues, je dois construire des objets et les serialiser ensuite. J'ai notament un fichier qui fait 54 000 lignes. Pour situer le contexte, ce fichier est l'enregistrement des commandes. Chaque ligne représente la vente d'un lot (ou d'une partie de lot) pour un article donnée et pour une commande donnée. Je dois donc créer ces objets lots, articles et commande. Une commande contiendra donc un ou plusieurs articles, et un article un ou plusieurs lots. Donc je lis mon fichier avec un FileReader et je le parcours avec un BufferedReader.
Le probleme c'est que les lignes concernant une meme commande ne sont pas les unes à la suite des autres, elles sont dispersées dans le fichier. Ma méthode :
Je lis ma ligne avec mon premier bufferedReader. Je memorise la ReferenceCommande de cette ligne dans une variable. Je vais ranger toutes les lignes concernant cette commande dans une hashmap. pour cela je parcour tout le fichier avec un deuxieme BufferedReader (et un deuxieme FileReader). Une fois la fin du fichier atteint j'ai donc recuperé toutes mes lignes pour cette commande. Je ferme donc les 2eme BufferedReader et FileReader, et je construit mes Lots et Articles, et ma Commande pour finir, que je range dans une HashMap qui contiendra donc toutes les commandes de ce fichier. Puis mon premier BufferedReader passe a la ligne suivante, je regarde si la referenceCommande de cette ligne n'et pas une commande deja traitée (j'ai mémorisé dans un ArrayList toutes les refCommandes déjà traité) et si ce n'est donc pas le cas, je recommence le traitement.
Probleme, avec 54 000 lignes, cette methode prendrai plus de 24h... en effet arrivé environ à la 22 000 ligne, le programme ne traite environ qu'une ligne toutes les 2 secondes. Plus le programme avance dans les lignes traitées, plus il ralenti.
A chaque commande toutes mes variables sont "vidées" excepté le HashMap qui contient toutes les commandes. Je ne sais pas tres bien comment fonctionne les BufferedReader et les FileReader, donc je ne sais pas si ce sont eux (les premiers, ceux qui restent ouverts) qui ralentissent mon application, ou bien uniquement le HashMap qui contient toutes mes commandes.
Bref je cherche un moyen d'optimiser le temps d'execution, si quelqu'un a une idée?? Merci d'avoir lu jusqu'au bout