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 :

Compter le nombre de cycles horloges


Sujet :

Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 22
    Points : 15
    Points
    15
    Par défaut Compter le nombre de cycles horloges
    Bonjour,

    Souhaitant évaluer les performances d'algorithmes en Java, est-il possible d'obtenir le nombre de cycles horloges qui ont été nécessaires à l'exécution d'un programme ? Ce n'est pas le temps qui m'intéresse (comme j'ai pu voir ici) mais bien le nombre de cycle, car le temps varie en fonction de l'ordinateur et des programmes ouverts en cours d'exécution.

    Merci d'avance !
    collect

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Tu t'engages dans une mauvaise voie.
    Si tu souhaites comparer les temps d'exécutions de différents algorithmes, tu dois faire tes chronométrages sur une même machine dans les mêmes conditions pour tous les algorithmes. Tu pourras choisir l'algorithme le plus rapide. Sur une machine entièrement dédiée à ces tests, le temps d'exécution est étroitement lié au nombre de cycles d'horloge, quand bien même tes algorithmes seraient parallèles.
    C'est certainement l'algorithme le plus rapide qui sera à privilégier pour le déploiement sur toutes les machines.

    Si les machines hôtes sont vraiment différentes (RAM, nombre de coeurs pour le multi-thread/multi-processus, débit réseau, espace et performance disque), alors tu devras également comparer d'autres indicateurs : usage de la RAM, du disque dur, débit réseau... autant d'indicateur que de différences matérielles.
    Tu devras ensuite déterminer pour chaque algorithme la ressource limitante et faire ton choix en conséquence pour ton programme final.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  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
    Citation Envoyé par collect Voir le message
    Bonjour,

    Souhaitant évaluer les performances d'algorithmes en Java, est-il possible d'obtenir le nombre de cycles horloges qui ont été nécessaires à l'exécution d'un programme ?
    Non.

    Non seulement, ce n'est plus relevant de nos jours pour tout un tas de raisons, mais c'est aussi devenu impossible à calculer en raison de la complexité des CPUs modernes. Chaque run peut entrainer des cycles d'horloges différents, suivant l'étant du cache du CPU, de l'occupation de la RAM, des erreurs de synchronisation du bus, et que sais je d'autre. Même en assembleur ce serait impossible. Alors en java dans une machine virtuelle qui n'a pas la notion de cycles...

    Ce que tu dois mesurer, c'est la performance du programme. Et tu dois faire de nombreux run, dans des conditions proches de la production, pour avoir des bonnes idées ds performances. Avec le fonctionnement du compilateur JIT, chaque run va se comporter différement. Un jour ce sera un bout du code qui va être compilé en natif, un autre ce sera le bout d'a coté

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    C'est juste. Je n'utilise pas le disque dur ni le réseau, mais l'accès à la mémoire RAM est déjà un véritable fléau pour les calculs à cause de la mémoire cache. Merci pour vos réponses !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/10/2013, 14h01
  2. Réponses: 4
    Dernier message: 16/03/2010, 16h49
  3. Réponses: 6
    Dernier message: 08/04/2008, 14h23
  4. [TListView] Compter le nombre de lignes
    Par agh dans le forum Composants VCL
    Réponses: 2
    Dernier message: 30/09/2002, 20h25
  5. Compter le nombre ligne listée (COUNT) ?
    Par StouffR dans le forum Langage SQL
    Réponses: 7
    Dernier message: 02/09/2002, 09h41

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