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 :

Performance compilation GCJ


Sujet :

Java

  1. #1
    Membre du Club
    Homme Profil pro
    C++
    Inscrit en
    Janvier 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : C++

    Informations forums :
    Inscription : Janvier 2013
    Messages : 45
    Points : 44
    Points
    44
    Par défaut Performance compilation GCJ
    Bonjour à tous,
    Je cherche des informations sur la compilation de programme Java. J'entends par la "en langage machine" comme le fait GCJ, si j'ai bien compris.

    Une recherche sur le forum m'a déjà apprise que les exécutables étaient beaucoup plus gros que leurs équivalents c++ du fait de la compilation de toutes les classes, ce n'est pas un problème pour moi.

    Je me questionne beaucoup sur les performances d'une telle application Java "compilée". Ne sont-elles pas censées être les mêmes que celle de n'importe quel autre langage que l'on compilerait en natif ? La (faible) perte de performance due à la JVM est un des arguments souvent en défaveur de Java.

    Quant à savoir pourquoi je m'intéresse à ce type de compilation, eh bien c'est pour ma culture personnelle, et peut-être aussi dans l'optique de compiler directement certaines applications pour macintosh.

    Merci beauoup pour vos réponses et conseils

  2. #2
    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
    Bien balaise celui qui arrive à te montrer aujourd'hui qu'en utilisation réelle, l'intepréteur de la jvm représente un sur cout. Au contraire, avec le JIT et toutes les optimisations dynamiques qui se font dans la jvm, on aura de meilleures perf qu'en convertissant le code java en language machine.

    Il faut savoir que la jvm analyse en permanance l'exécution pour, par exemple

    compiler nativement en mémoire les bouts de code les plus solicité
    faire de l'inlining des appels les plus courant
    Et probablement un tas d'autres trucs que je ne connais pas

  3. #3
    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 n0-sheep Voir le message
    La (faible) perte de performance due à la JVM est un des arguments souvent en défaveur de Java.
    Cette drôle d'impression d'être Marty McFly au volant de sa DeLorean !


    Plus sérieusement ce genre d'argument n'est plus d'actualités depuis les années 1990 et le mode interprété de Java !!!
    Depuis Java 1.2 (1998), la JVM est doté d'un compilateur JIT qui permet de nombreuses optimisations. Et il n'a cessé d'évoluer depuis !




    Il faut dire que le JIT possède un énorme avantage sur les compilateurs natifs : comme il s'exécute en même temps que l'application, il connait tout du contexte, que ce soit des spécificités matériels de la machine hôte ou de l'état du programme (classes chargées, etc.).

    Le compilateur JIT peut donc se permettre des optimisations plus poussés que ne le ferais un compilateur natif (tout du moins sans restreindre l'utilisation du programme).
    Mieux : JIT peut dé-optimiser le code, ce qui lui permet de faire des optimisations vraiment très poussé dans certains cas, quitte à revenir en arrière si le contexte évolue...


    J'avais fait des essais il y a quelques temps, et la JVM s'en sortais souvent mieux que la compilation natif : La machine virtuelle est-t-elle vraiment lente ?

    Après ca vaut ce que ca vaut, et c'est des bouts de codes bien spécifique...

    a++

Discussions similaires

  1. Réponses: 5
    Dernier message: 14/03/2013, 21h30
  2. Performance Compilation sur le NAS au cours du temps
    Par Charlie Snoopy dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 07/12/2011, 22h52
  3. Réponses: 1
    Dernier message: 02/10/2008, 19h29
  4. gcj pour cross compiler pour PPC
    Par obelix dans le forum Langage
    Réponses: 7
    Dernier message: 09/10/2006, 09h38
  5. Compilation Java avec GCJ pour faire un exe. Pourquoi ?
    Par Claude URBAN dans le forum Général Java
    Réponses: 11
    Dernier message: 17/06/2006, 21h00

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