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

  FORUM HardWare.fr
  Programmation
  Java

  System.out.println et optimisation

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

System.out.println et optimisation

n°922574
Mazda3
Posté le 14-12-2004 à 11:13:47  profilanswer
 

Voilà, j'ai fait une appli qui date de "il y a longtemps" et à cette époque je ne connaissais pas encore log4j et je me contentais de faire plein de "System.out.println" pour debugger mon appli.  
Maintenant je me retrouve avec une appli qui me sort en une journée plus de 5mo de texte dans le catalina.out (que des messages de debug).
 
A votre avis, en enlevant tout ces messages, mon appli sera mieux optimisé niveau temps d'execution ? En gros, ces sorties de textes ralentissent-ils mon appli ou sont négligables ?
 
Merci de votre aide  :jap:

mood
Publicité
Posté le 14-12-2004 à 11:13:47  profilanswer
 

n°922579
Bidem
Posté le 14-12-2004 à 11:25:06  profilanswer
 

Ca ralentit ton appli de façon considérable.
 
Pour t'en convaincre essaye cette classe :
 

Code :
  1. public class TestSystemOut {
  2. public static void main(String[] args) {
  3.  long debut = System.currentTimeMillis();
  4.  for (int i=0; i<10000; i++) {
  5.   System.out.println("" );
  6.  }
  7.  System.out.println(" => "+(System.currentTimeMillis()-debut));
  8. }
  9. }


 
Puis relance la après avoir mis le System.ou.println("" ) en commentaire

n°922591
Mazda3
Posté le 14-12-2004 à 11:40:12  profilanswer
 

Ok !
Donc si j'utilise log4j (à la place du System.out), cela ralenti autant que si je fait des System.out ?
 
En gros il ne faut rien mettre ?


Message édité par Mazda3 le 14-12-2004 à 11:40:59
n°922607
Mazda3
Posté le 14-12-2004 à 12:00:20  profilanswer
 

Autre question ... le temps que vous repondez a celle d'avant :jap: Toujours pour l'optmisation
Disons que j'ai un package ("A" ) avec 20 classes dedans
 
Dans une classe qu'on va appeller Voiture, d'un autre package ("B" ), je n'utilise que une classe("Marque.class" ) du package "A".
 
Mais dans le code de Voiture.java je fais :
 

Code :
  1. import A.*;


 
Vaut-il mieux que je fasse , en terme de performance :
 

Code :
  1. import A.Marques;


 
ou c'est negligeable ?


Message édité par Mazda3 le 14-12-2004 à 12:15:24
n°922609
Bidem
Posté le 14-12-2004 à 12:11:40  profilanswer
 

mazda3 a écrit :

Ok !
Donc si j'utilise log4j (à la place du System.out), cela ralenti autant que si je fait des System.out ?
 
En gros il ne faut rien mettre ?


 
Evidemment, ça ralentit un peu par rapport à ne rien mettre mais ça reste bien mieux que le System.out
 

Code :
  1. public class TestLog4j {
  2. public static void main(String[] args) {
  3.  //init de log4j
  4.  Log4jInitStandAlone.init();
  5.  Logger logger = Logger.getLogger(TestLog4j.class.getName());
  6.  long debut = System.currentTimeMillis();
  7.  for (int i=0; i<10000; i++) {
  8.   logger.debug("" );
  9.  }
  10.  System.out.println(" => "+(System.currentTimeMillis()-debut));
  11. }
  12. }


 
pour moi, avec le System.out.println(), ça mettait 3 sec, avec Log4j ça met 0.8 sec

n°922625
FlorentG
Posté le 14-12-2004 à 12:34:05  profilanswer
 

mazda3 a écrit :

Autre question ... le temps que vous repondez a celle d'avant :jap: Toujours pour l'optmisation
Disons que j'ai un package ("A" ) avec 20 classes dedans
 
Dans une classe qu'on va appeller Voiture, d'un autre package ("B" ), je n'utilise que une classe("Marque.class" ) du package "A".
 
Mais dans le code de Voiture.java je fais :
 

Code :
  1. import A.*;


 
Vaut-il mieux que je fasse , en terme de performance :
 

Code :
  1. import A.Marques;


 
ou c'est negligeable ?


 
Ca change strictement rien. Si du décompile ton application, tu verra que le import ne figure nulle part et que tous tes appels à des classes voient utilisent le chemin complet, genre si t'as dans ton progs :
 

Code :
  1. import java.awt.Graphics;
  2. ...
  3. Graphics g = new Graphics();


 
Ton programme pseudo-compilé va remplacer tout ça part :
 

Code :
  1. java.awt.Graphics g = new java.awt.Graphics();


 
Le import sert juste lors de l'écriture du programme, pour que t'ai pas besoin de taper tout le chemin complet ;)
 
EDIT :
 
Personnellement, j'utilise toujours import A.Marques au lieu de A.*, comme ça en regardant le début du fichier, je vois tout de suite ce que j'utilise...


Message édité par FlorentG le 14-12-2004 à 12:35:11
n°922685
Mazda3
Posté le 14-12-2004 à 13:40:57  profilanswer
 

Ok, merci de vos réponses !

n°922783
benou
Posté le 14-12-2004 à 14:31:08  profilanswer
 

bidem a écrit :

Ca ralentit ton appli de façon considérable.


mouais ... mais ton exemple n'est pas correcte : là tu écris dans la sortie standard alors que pour lui, c'est redirigé dans un fichier ce qui est plus rapide ...


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

  System.out.println et optimisation

 

Sujets relatifs
Automatiser la creation d'un (ODBC-System DSN)ORACLE tbs system Comment le renommer?
erreur avec la fonction system => unable to fork....[Débutant] Optimisation d'un menu
OPTIMISATION D'ALGO POUR LE TEMPS DE CALCULOptimisation - synthèse sonore temps réel
[php] optimisation[MySQL] Optimisation requete sur ENORME table ...
[CMS] Content Managing SystemCalcul sur une matrice, optimisation ?
Plus de sujets relatifs à : System.out.println et optimisation


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)