Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1324 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Lancement Processus: plus lents depuis java / terminal

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Lancement Processus: plus lents depuis java / terminal

n°1296539
hugo25
Posté le 01-02-2006 à 15:52:31  profilanswer
 

Bonjour,
 
Je travaille sur une programme qui lance plusieurs processus :
 
Ceci lance des exécutables (écrit en c) qui réalisent des caluls très compliqués : plusieurs heures d'éxécution, et qui affichent les résultats sans cesse dans la console.
 
Le temps d'exécution est donc primordiale, et l'éxécution est plus longue quand je lance ce programme depuis java que depuis le terminal.
 
Il y a t'il une raison à cela ?
 
Merci d'avance pour votre aide.


Message édité par hugo25 le 02-02-2006 à 18:06:20
mood
Publicité
Posté le 01-02-2006 à 15:52:31  profilanswer
 

n°1296576
lorill
Posté le 01-02-2006 à 16:14:01  profilanswer
 

oui, tu analyses les flux d'entrée et sortie pendant que le programme tourne, je suppose que ca doit ralentir le truc si tu as beaucoup d'ecritures, surtout que comme tu utilises readLine(), ben ca recherche les retours chariots...
 
tu pourrais gagner en gérant mieux tes flux je pense.

n°1296590
hugo25
Posté le 01-02-2006 à 16:22:50  profilanswer
 

Je vois pas trop comment les géré différement, pour améliorer les performances. :(

n°1296612
Bidem
Posté le 01-02-2006 à 16:32:21  profilanswer
 

Je vois 2 choses qui bouffent pas mal de ressources :
 
 - new String(bufferedReaderInputStream.readLine())
       le constructeur String(String) est une horreur à ne jamais utiliser et je vois même pas pourquoi il existe.
 
 - System.out.println(resultat); à l'intérieur des boucle...
   L'écriture sur la sortie standard est assez couteuse, passe plutot sur un system de Logs (Log4J par exemple http://logging.apache.org/log4j/docs/)

n°1296617
lorill
Posté le 01-02-2006 à 16:36:06  profilanswer
 

tu peux déjà commencer par lire par blocks plutot que par ligne.
 
cad, tu vires les BufferedReader, et tu manipules directement tes InputStream et OutputStream sortis du process.
 
apres, tu te fais un byte[] d'une taille raisonnable (genre 1024), et tu lis de cette maniere.

n°1296624
hugo25
Posté le 01-02-2006 à 16:40:11  profilanswer
 

Si j'ai bien compris, toujours faire :
String s = "nouveau";
et surtout pas :
String s = new String("nouveau" );
 
Je vais regarder au niveau des logs.

n°1296627
lorill
Posté le 01-02-2006 à 16:41:05  profilanswer
 

hugo25 a écrit :

Si j'ai bien compris, toujours faire :
String s = "nouveau";
et surtout pas :
String s = new String("nouveau" );


oui déjà, j'avais même pas vu ca

n°1296743
Bidem
Posté le 01-02-2006 à 17:49:18  profilanswer
 

hugo25 a écrit :

Si j'ai bien compris, toujours faire :
String s = "nouveau";
et surtout pas :
String s = new String("nouveau" );


 
Oui, c'est ça, et dans ton cas ça donne ;
 

Code :
  1. resultat = bufferedReaderInputStream.readLine();


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Lancement Processus: plus lents depuis java / terminal

 

Sujets relatifs
[JAVA - Débutant] - Probleme premier programme en JAVAComment rendre un java executable ?
[Java] Identifier un fichier vidéo Mpeg1[Java ]Déplacer une image
[Java] Moyen élégant d'avoir une icone dans la systrayProgrammation java sur telephone mobile ?
script java actif sur toutes les pages d'un site???JAVA: scrollbar + netbeans 4.0+absolutelayout
Livre pour débuter en Java ?JAVA SSL
Plus de sujets relatifs à : Lancement Processus: plus lents depuis java / terminal


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR