IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Impact du CLASSPATH sur les performances


Sujet :

Langage Java

  1. #1
    Membre averti Avatar de Rei Angelus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 292
    Points : 356
    Points
    356
    Par défaut Impact du CLASSPATH sur les performances
    Bonjour,

    Je me pense définir une variable CLASSPATH unique pour toutes mes applis java.

    Est-ce le fait que le CLASSPATH contienne un certain nombre de chemins inutiles risque d'avoir un impact négatif sur les temps d'exécution de mes applis JAVA ?

    Est-ce que ma question est idiote ou pas ?

  2. #2
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Citation Envoyé par Rei Angelus Voir le message
    Est-ce le fait que le CLASSPATH contienne un certain nombre de chemins inutiles risque d'avoir un impact négatif sur les temps d'exécution de mes applis JAVA ?
    Oui car quand il devra chercher des classes dans le CLASSPATH, il aura plus de choix, c'est plus rapide de chercher dans 4 jars que dans 10.

    Personnellement j'exècre les logiciels qui modifient la variable d'environnement CLASSPATH et/ou Path quand c'est inutile (entre autre les logiciels Oracle qui placent toujours leur JRE dans le Path...).
    Mais je ne sais pas si tu parlais de la variable d'env.
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  3. #3
    Membre averti Avatar de Rei Angelus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 292
    Points : 356
    Points
    356
    Par défaut
    Effectivement, je parle d'une variable d'environnement CLASSPATH.

    Aurais-tu des données plus quantitatives quand à l'impact de cette soultion ?

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 268
    Points : 199
    Points
    199
    Par défaut
    La variable d'environnement CLASSPATH de windows ? C'est bien ca ? Elle n'aura aucun impact sur les temps d'exécution des applications !?
    Pensez au tag quand votre problème est réglé !

  5. #5
    Membre averti Avatar de Rei Angelus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 292
    Points : 356
    Points
    356
    Par défaut
    Pour être plus précis, je suis sous UNIX. J'ai un certain nombre de shell qui execute de 1 à n programmes JAVA.

    Actuellement dans chaque shell, je définit localement et spécifiquement le CLASSPATH avant le lancement de mon appli JAVA.

    Si je définit ma variable CLASSPATH globalement dans mon environnement en "concaténant" tous les cas possibles, est ce que cela ne risque pas d'impacter négativement les performance de la JVM étant donné que je lui indiquerai des chemins inutiles dans le CLASSPATH ?

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 268
    Points : 199
    Points
    199
    Par défaut
    Je connais très peu unix, mais logiquement, augmenter la taille des classpath augmente les temps de recherche d'un fichier, mais pas leurs exécutions. Donc d'après moi, tu devrais pouvoir tenter de le faire sans perdre de temps de réponse. Peut être l'ordre des classpath sera important par contre.

    Essaie éventuellement de faire des séries de tests, en attendant que d'autres plus connaisseurs apportent une réponse plus satisfaisante
    Pensez au tag quand votre problème est réglé !

  7. #7
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Citation Envoyé par JohnNC Voir le message
    augmente les temps de recherche d'un fichier, mais pas leurs exécutions
    Le temps d'exécution initial dépend du temps de recherche. Donc le temps de recherche augmente = le temps d'exécution augmente.

    Une fois que la class est chargée bien sûr le problème ne se pose pas.

    L'impact sur les perfs dépend de tellement de facteurs qu'on ne peut pas donner de chiffre précis ici, il faut faire ses propres tests. Ca dépend de la taille des jars, de leur nombre, du système de fichier, de la "fraicheur" de ton environnement (moins sous Unix que sous Windows), etc.

    Au delà de tout ça, c'est crade de modifier la variable d'environnement. Ca veut dire que TOUS les logiciels java de la machine auront ces jars dans leur classpath, c'est inutile et peut même être dangereux si tu as besoin de version différente de jars selon les logiciels.
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  8. #8
    Membre averti Avatar de Rei Angelus
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 292
    Points : 356
    Points
    356
    Par défaut
    Il est clair que je ne vais pas modifier la variable CLASSPATH de mon environnement, c'est effectivement très "crade".

    Au final, je vais la surcharger au début de chacun de mes shells en fonction des programmes java appelés via une fonction setClasspath.

    Cela me permettra de limiter à la fois le nombre de déclaration de mes Classpath et le nombre de chemins inutiles qu'ils contiennent. Et cerise sur le gâteau, je n'aurai plus qu'une modif à faire en cas de changement de classpath !

    Qu'en pensez-vous ?

  9. #9
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Je ne comprends pas ce que tu veux faire
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  10. #10
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Pourquoi utiliser une variable d'environnement CLASSPATH alors ? Tu cours le risque de dépendre ou d'avoir des conflits avec une librairie présente dans le CLASSPATH "commun".

    La variable d'environnement CLASSPATH est vraiment une mauvaise idée, et pourrais être dénaturé par certaines applications qui la modifient


    Tu sembles utiliser des scripts shell pour lancer tes programmes, donc le plus simple serait de définir toutes tes dépendances dans ce script.


    Ou mieux si tu utilises des jar auto-exécutable tu définis tes dépendances dans ton manifest.


    a++

  11. #11
    Membre confirmé Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Points : 565
    Points
    565
    Par défaut
    Citation Envoyé par Rei Angelus Voir le message
    Il est clair que je ne vais pas modifier la variable CLASSPATH de mon environnement, c'est effectivement très "crade".

    Au final, je vais la surcharger au début de chacun de mes shells en fonction des programmes java appelés via une fonction setClasspath.

    Cela me permettra de limiter à la fois le nombre de déclaration de mes Classpath et le nombre de chemins inutiles qu'ils contiennent. Et cerise sur le gâteau, je n'aurai plus qu'une modif à faire en cas de changement de classpath !

    Qu'en pensez-vous ?
    Dans ton shell de démarrage il te sffit de faire ( syntaxe approximative là désolé)

    CLASSPATH_SHELL = $CLASSPATH ;
    CLASSPATH_SHELL = $CLASSPATH_SHELL;TESAUTRESJARS

    Apres tu fais :

    java -classpath=$CLASSPATH_SHELL tonprogramme
    C'est pas parce que ca marche que c'est bon!!
    Pensez au bouton "Résolu"
    Je ne réponds pas en privé aux questions

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Impact de TrueCrypt sur les performances en développement
    Par hardballer dans le forum Autres Logiciels
    Réponses: 0
    Dernier message: 30/08/2011, 14h23
  2. [2008] Impact sur les performance de l'ODBC ?
    Par Sergejack dans le forum Développement
    Réponses: 1
    Dernier message: 10/08/2010, 23h00
  3. Impact sur les performances d'un grand nombre de tables
    Par thechief dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 16/07/2010, 16h47
  4. Impact du double archive log sur les performances du système ?
    Par condor_01 dans le forum Administration
    Réponses: 5
    Dernier message: 22/05/2008, 14h08
  5. Réponses: 2
    Dernier message: 13/11/2007, 10h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo