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 :

[Compilateur]Temps de compilation et recompilation


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut [Compilateur]Temps de compilation et recompilation
    voilà,je me demandais pourquoi quand on compile deux fois un mème fichier source sans obtenir d'erreurs, la deuxiéme compilation est plus rapide que la première?

    [ Modéré par Viena ]
    Ajout d'un tag et modification du titre : Pour la compréhension de tous, utilisez un titre clair et les tags ! merci.

    Les Règles du Forum


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  2. #2
    Membre Expert
    Avatar de elitost
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2003
    Messages
    1 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 985
    Par défaut
    non ( si rien ne perturbe la compilation ).

  3. #3
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut
    Citation Envoyé par elitost
    non ( si rien ne perturbe la compilation ).
    désolé de te contre dire mais si,je viens de refaire l'experience,j'ai eu un temps de compilation à la deuxième fois,dix fois moins long qu'à la première!!, je précise que j'utilise le jdk1.5 de sun.
    j'ai cherché des informations sur le fonctionnement de javac mais j'ai rien trouvé.Si quelqu'un pouvait eclairer ma lanterne....


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  4. #4
    Membre chevronné Avatar de Scorpyosis
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2004
    Messages : 365
    Par défaut
    Si c'est deux complations succesives, ca peut peut-être s'expliquer par le fait que moins de test sont effectués vu qu'aucun changement n'a été éfféctué (hypothèse).

    Sinon compilation via un IDE ou en ligne de commande et sous quel OS, parce que ca peut venir de là aussi.

  5. #5
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut
    Citation Envoyé par Scorpyosis
    Si c'est deux complations succesives, ca peut peut-être s'expliquer par le fait que moins de test sont effectués vu qu'aucun changement n'a été éfféctué (hypothèse).
    oui,c'est deux compilations successives.Mais le compilateur comment il "sait" qu'aucun changement n'a été éffectué?
    Sinon compilation via un IDE ou en ligne de commande et sous quel OS, parce que ca peut venir de là aussi.
    alors:compilation en ligne de commande,sous WindowsXp


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  6. #6
    Membre chevronné Avatar de Scorpyosis
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2004
    Messages : 365
    Par défaut
    Gros fichier java ?

    parce que je viens de tester (Xp ligne de commande) avec un petit fichier qui fait 50 lignes environ, et il y a pas de différence notable, en tout cas pas dans un rapport de 10.

  7. #7
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut
    moi j'ai testé avec un tout petit fichier d'une seule classse,faisant une dizaine de lignes.


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  8. #8
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Avec un fichier contenant juste class A {} je constate la difference. Je pense que cela vient de l'OS qui met en cache les donnees executables du compilateur.

  9. #9
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut
    je ne comprends pas tout là pourrais-tu ètre plus explicite? ,merci


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  10. #10
    FFF
    FFF est déconnecté
    Membre éclairé Avatar de FFF
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 342
    Par défaut
    peut-être tout simplement que javac met en relation la dernière date de modification de ton fichier source avec ton exécutable (via fichier log), si ton fichier source ne change pas alors javac ne fait rien (puisque l'exécutable est déjà crée). il y a peut -être une notion de version derrière tout ça...
    Normalement si tu compiles t'effaces ton executable et tu recompiles, il n'y a plus de différence de durée je pense...

    Ce ne sont que des supposition logiques..

  11. #11
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 899
    Billets dans le blog
    54
    Par défaut
    Je pense que cela vient de l'OS qui met en cache les donnees executables du compilateur.
    Plutot que de re-lire le code du compilateur sur le disque a partir du fichier javac.exe et de le charger en memoire pour pouvoir l'executer et ce a chaque utilisation du programme, Windows utiliserai un cache dans lequel ce code est stocke pendant un certain temp. Cela permet donc d'optimiser le lancement de la meme application plusieurs fois successivement ou d'economiser de la memoire quand on en lance plusieurs instances en meme temps.

    Plusieurs systemes UNIX fonctionnent de cette maniere egalement. C'est super utile dans des systemes avec plein d'utilisateurs sur un meme serveur pour eviter de se trouver avec plein de duplica du code executable en memoire. Ex a la fac en license on etait sur des Terminaux X et donc en fait les applications tournaient sur un serveur unique (SunOS je crois). Tous les etudiants lancaient Emacs en meme temps. Le code executable d'emacs etait centralise qq part dans un espace memoire unique utilise par tout le monde (de maniere transparente). Ensuite chacun avait sa propre pile et on propre tas d'execution bien a lui.

    Ainsi le temps de compilation resterai le meme, seul varierai le temps de chargement du code du compilateur. Ce n'est qu'une supposition bien sur.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  12. #12
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    Notez que la date derniere modification du .class change meme si le fichier source n'a pas change. Je doute vraiment que javac recompile tout a chaque fois mais il va quand meme faire quelque chose dans les .class.

  13. #13
    Membre éclairé Avatar de soad
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    520
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2004
    Messages : 520
    Par défaut
    Citation Envoyé par bouye
    Je pense que cela vient de l'OS qui met en cache les donnees executables du compilateur.
    Plutot que de re-lire le code du compilateur sur le disque a partir du fichier javac.exe et de le charger en memoire pour pouvoir l'executer et ce a chaque utilisation du programme, Windows utiliserai un cache dans lequel ce code est stocke pendant un certain temp. Cela permet donc d'optimiser le lancement de la meme application plusieurs fois successivement ou d'economiser de la memoire quand on en lance plusieurs instances en meme temps.

    Plusieurs systemes UNIX fonctionnent de cette maniere egalement. C'est super utile dans des systemes avec plein d'utilisateurs sur un meme serveur pour eviter de se trouver avec plein de duplica du code executable en memoire. Ex a la fac en license on etait sur des Terminaux X et donc en fait les applications tournaient sur un serveur unique (SunOS je crois). Tous les etudiants lancaient Emacs en meme temps. Le code executable d'emacs etait centralise qq part dans un espace memoire unique utilise par tout le monde (de maniere transparente). Ensuite chacun avait sa propre pile et on propre tas d'execution bien a lui.

    Ainsi le temps de compilation resterai le meme, seul varierai le temps de chargement du code du compilateur. Ce n'est qu'une supposition bien sur.
    je confirme !!!

    et seule la première compilation est la plus lente, si tu compile 2, 3, 4, 5 , ... fois la vitesse reste la meme !!! (A moins que la mémoire cache c'est vider pour un autre chose)

    tu peux aussi essayer d'ouvrir l'explorer, word, ou n'importe quel autre programme, la 1er fois sera tjs la plus lente

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 10/12/2007, 18h03
  2. Le compilateur eclipse ne compile pas certaines classes
    Par kalysto dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 25/08/2007, 09h58
  3. Réponses: 13
    Dernier message: 30/11/2006, 21h19
  4. [Compilateur]Problème de compilation des sources...
    Par Dimanche dans le forum Général Java
    Réponses: 6
    Dernier message: 15/03/2005, 23h04
  5. [Compilateur]Option de compil
    Par Guybrush dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 30/09/2004, 11h22

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