Aller au contenu

Java runtime

Featured Replies

Posté(e)

Salut a tous.

Dans un programme java je dois faire tourner une appli extérieure.

Je l'ai donc tester dans un projet test avant de l'insérer dans un projet deja en court.

Dans mon main je lance deux threads qui récuperent les donnees de l'appli et les erreurs.

Le temps total est de 130 ms a peu pres et le code marche impec.

Cependant, lorsque je copie exactement le même code dans le vrai projet, le temps de traitement passe à 1 seconde.

En fait, 1 seconde par chaine de caracteres et il doit en traiter 150..., donc un peu moins de 3 minutes...c'est beaucoup trop long.

voici le code du thread :

public void run() {
	try {
		BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
		String line = "";
		try {
			while((line = reader.readLine()) != null) {
				// Traitement court
			}
		} finally {
			reader.close();
		}
	} catch(IOException ioe) {
		ioe.printStackTrace();
	}
}

Apres quelques tests, il s'est avérer que le traitement le plus long est le readline (+ ou - une seconde).

Savez vous d'ou vient un tel changement de temps entre deux codes identiques?

Merci

Posté(e)

Peut-être que ton thread mange trop de temps processeur, et que le process lancé a du mal à s'exécuter, ce qui en retour ralentirait la lecture du flux...

Tu devrais essayer de placer un sleep court dans la boucle de lecture.

Posté(e)

Erf désolé mais au boulot le navigateur m'a planté 3 fois de suite entre les mains... du coup je n'ai pas pu voir si ça avait bien posté :mdr:

Merci de ta mansuétude grande ô combien :eeek2:

Posté(e)
  • Auteur

non, un seul acces.

et pourquoi le thread consommerait-il plus de temps dans un code que dans l'autre?

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.