bonjour,
Je suis débutant en java. J'aimerai vous soumettre un problème que j'ai. Je ne pense pas qu'il s'agisse d'un problème algorithmique mais bien un problème inhérent au langage JAVA.
voici l'histoire.
j'ai réalisé un programme qui sera amené a fonctionné sur un grand nombre de données de la façon suivante:
1) lecture d'un fichier
2) analyse du fichier
3) traitement
Lors de ces trois phases, j'instancie un grand nombres d'objets.
l'exécution de ce programme prend environ 4.5 secondes lorsque je l'exécute sur un fichier.
J'ai ensuite essayé d'insérer une boucle for dans le main pour faire une moyenne du temps d'exécution :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 public static void main(String[] args) { //un parseur de fichier CustomFileReader fic = null; //une structure de donnée pour stocker l'info HashMap<String, Double> infos=null; for (int i = 0 ; i < 4; i ++ ){ long debut =System.nanoTime()/1000000000; long fin =0; System.out.println( "debut : "+debut ) ; fic = null; infos = null; 1) lecture du fichier 2) analyse du fichier 3) traitement System.gc(); fin = System.nanoTime()/1000000000; System.out.println( "fin : "+fin ) ; System.out.println( "diff : "+(fin-debut) ) ; } System.exit(0); }
voici ce que le programme genere comme sortie :
Code X : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 debut : 1162548161 fin : 1162548166 diff : 5 debut : 1162548166 fin : 1162548183 diff : 17 debut : 1162548183 fin : 1162548219 diff : 36 debut : 1162548219 fin : 1162548282 diff : 63
diff correspond au temps d'exécution d'une boucle. On voit bien que le temps d'exécution crois très vite alors qu'il s'agit du même traitement exécuté 4 fois sur le même fichier
D'autre part, j'ai essayé par un script perl de lancer le programme sans la boucle for :
je constate alors que le temps d'exécution reste constant...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 #!/usr/bin/perl for($i = 0 ; $i <4 ; $i++){ System("time java - jar test.jar"); }
Comment cela ce fait il que le temps d'exécution augmente dans un cas et pas dans l'autre?????
Quelqu'un aurai-t-il une idée
Je vais être amené a traiter un grand nombre d'information et je ne souhaiterai pas avoir a utiliser un artifice tel que "lancer le programme avec un script perl"
Si quelqu'un pourrai me donner une piste cela m'aiderai beaucoup.
Partager