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

Java Discussion :

Optimisation java et hotspot


Sujet :

Java

  1. #1
    Membre averti
    Inscrit en
    Février 2006
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 707
    Points : 366
    Points
    366
    Par défaut Optimisation java et hotspot
    Bonjour,

    J'ai lu un document sur l'optimisation en java

    surprise, j'aprends notement que le compilateur java ne peut pas "mettre en ligne" les méthode contenant des variables locale.

    Par exemeple, un code comme celui-ci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    public void final refresh() {
              for (int i = nbRow; i >=0 ;i--) {
                handler.removeRow(0);
              }
                         }
    Ne peut pas être mis en ligne par Hotspot parce qu'il y a i qui est une variable certe de boucle mais une variable local.

    Y'a-t-il des règle, des exemple pour optimiser et pour que hotspot (dernière vertion) mette en ligne les méthode de mon programme ?

    Merci pour votre réponse

    A bientôt

    Battant
    Battant

  2. #2
    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,


    Décidément ce document n'arrête pas de revenir...



    Un conseil : ne te base surtout pas là dessus. C'est plus qu'obsolète et cela date d'avant Java 2...

    Si tu recherches des informations sur l'inlining il vaut mieux te tourner vers le site de Sun et surtout sur des documents datés

    a++

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    on devrait peut etre mettre une entrée dans la FAQ, catégorie "a ne pas lire"

  4. #4
    Membre averti
    Inscrit en
    Février 2006
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 707
    Points : 366
    Points
    366
    Par défaut
    Bonjour,

    Certe je suis peut-être tombé sur un document obsolète mais ce que je cherche, c'est une documentation sur les capacité actuelle de hotspot a optimiser avec des exemple concret de code optimisé et non optimisé ou plutôt

    Le compilateur ne sais pas mettre la méthode suivante en ligne

    Voici la version que le compilateur actuel sais "mettre en ligne"

    Voici l'algorithme le plus rapide pour cette méthode.

    Sur quoi puis-je me basé pour optimiser mon programme ?

    Pouvez-vous me donner des liens.


    Est ce que le multi threading est une bonne idée pour optimiser un programme ?

    Merci d'avance

    A bientôt

    Battant
    Battant

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    après 6 années de développement continu en java, je doit te dire que jamasi je me suis posé la question quand j'écrivais une méthode de savoir si elle peux etre rendue inline ou pas. Pourquoi?

    La pluspart du temps, le gain d'inline est minime, seule certaines méthodes bien particulières gagnet à être inline (car appelée très souvent dans l'algo)

    Souvent, quand on se pose la question de l'optimisation trop tôt, on se retrouver à predre beaucoup de temps pour gagner très peu.

    Le comportement dépendra du compilateur, hors sun n'est pas le seul à fournir des compilateurs. Le gain est donc incertain et instable.

    Des algorithmes bien posé et choisis sont bien plus efficace en termes de gain de performances que de se baser sur les optimisation du compilateur. On peux diviser par 10 ou 50 voir plus le temps d'exécution d'un code en améliorant l'algorithme, on peux, en général, gagner 10% en jouant sur les optimisations du compilateur.

    Il est souvent préférable d'écrire le code, et de lui faire subir un stress test au sein d'un profiler. Ce dernier vous indiquera immédiatement les point chaud de votre programme. Et parfois on est surpris de voir que le point chaud n'est absolument pas là où on le croyait!

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    je rajoute ceci:
    http://java.sun.com/products/hotspot...er.html#method
    Citation Envoyé par sun (en anglais)
    Method Inlining

    The frequency of virtual method invocations in the Java programming language is an important optimization bottleneck. Once the Java HotSpot adaptive optimizer has gathered information during execution about program hot spots, it not only compiles the hot spot into native code, but also performs extensive method inlining on that code.

    Inlining has important benefits. It dramatically reduces the dynamic frequency of method invocations, which saves the time needed to perform those method invocations. But even more importantly, inlining produces much larger blocks of code for the optimizer to work on. This creates a situation that significantly increases the effectiveness of traditional compiler optimizations, overcoming a major obstacle to increased Java programming language performance.

    Inlining is synergistic with other code optimizations, because it makes them more effective. As the Java HotSpot compiler matures, the ability to operate on large, inlined blocks of code will open the door to a host of even more advanced optimizations in the future.

    puis plus loin
    Because the Java HotSpot VM can automatically inline the vast majority of virtual method invocations, this performance penalty is dramatically reduced, and in many cases, eliminated altogether.

  7. #7
    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,

    Citation Envoyé par Battant Voir le message
    Sur quoi puis-je me basé pour optimiser mon programme ?
    Tu te poses la mauvaise question !

    Il faut d'abord te poser la question suivante : quel sont les portions de code qui entraine les mauvaises performances ?

    Tant que tu n'as pas la réponse à cette question, l'optimisation sera contre-productif et pourrait même poser des problème de performances !


    Donc : quel sont les problèmes de performance que tu rencontres ?


    a++

Discussions similaires

  1. optimiser java mémoire, charge
    Par cdm1024 dans le forum Général Java
    Réponses: 3
    Dernier message: 24/02/2009, 17h17
  2. optimisation java, debutant
    Par Mobistar dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 12/03/2008, 15h56
  3. Compiler du java en natif & Optimisation serveur socket
    Par Skreo dans le forum API standards et tierces
    Réponses: 32
    Dernier message: 09/07/2006, 16h31
  4. Optimisation java et xml
    Par ujoodha dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 25/10/2005, 14h53
  5. [JVM][OPTIONS][OPTIMISATION]pc dédié à Java
    Par narmataru dans le forum Général Java
    Réponses: 7
    Dernier message: 16/04/2003, 17h12

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