Partage
  • Partager sur Facebook
  • Partager sur Twitter

Mesurer le temps d'exécution

Sujet résolu
    14 mars 2012 à 20:29:46

    Bonjour/Bonsoir :) j'ai un petit souci et je sollicite votre aide ;)
    Pour connaitre le temps exacte (temps CPU) que prend un programme (ou bout de programme) java, j'ai trouvé cette fonction "getCurrentThreadCpuTime() " ici: http://java.developpez.com/faq/java/?p [...] S_tempsEcoule
    Et il y a une autre method "System.nanoTime()" mais cette method n'est pas très précise car elle retourne le temps actuel et donc la duree=temps de fin-le temps de debut
    Et donc si d'autre processus utilise le CPU, notre programme est mis en attente et ce temps d'attente est aussi compté dans duree !!!! :(
    c'est pour ça que la première method parait meilleur, mais bon elle ne marche pas comme on l’espérerait (elle me donne duree=0) :colere2:
    Une solution ??? :euh:
    Merci d'avance :lol:
    • Partager sur Facebook
    • Partager sur Twitter
      14 mars 2012 à 20:39:58

      long debut = System.currentTimeMillis();
      
      //Traitements...
      
      System.out.println(System.currentTimeMillis()-debut);
      //Affiche la durée d'exécution en millisecondes
      
      • Partager sur Facebook
      • Partager sur Twitter
      ⚙️ Une solution simple règle le problème ; une solution compliquée en crée un nouveau.
        14 mars 2012 à 20:51:05

        Oui j'utilise aussi cette méthode, mais le problème d'exactitude persiste, l'attente Active est aussi compté alors que je ne la veux pas compté (car je dois faire des comparaisons d'algorithmes sur la complexité temporelle empirique c-à-d le temps d'exécution )
        Merci pour la participation ^^
        • Partager sur Facebook
        • Partager sur Twitter
          14 mars 2012 à 21:54:35

          Salut,

          a mon avis, si tu prends des durées suffisamment longue, tu devrait t'en sortir parce que le pourcentage de temps passer à attendre est constant (si tu ne charge pas la machine comme un porc a certain moment et pas à d'autre, genre jouer a BF3).

          Sinon tu as la méthode time sous unix.

          Hedi
          • Partager sur Facebook
          • Partager sur Twitter
            14 mars 2012 à 22:33:55

            OK je vois !!! Merci beaucoup ^^
            • Partager sur Facebook
            • Partager sur Twitter
              14 mars 2012 à 22:38:51

              Et avec un Thread dédié ? Par exemple une classe qui implémenterait l'interface Runnable, au début de la méthode tu lances le Thread et dans la méthode run() tu fais une boucle qui fait une pause de 1ms à chaque tour et incrémente une variable de 1. Comme ça quand l'OS décidera de mettre ton programme "en pause" pour laisser la main à d'autres, ton thread sera aussi en pause et donc n'incrémentera pas la variable.
              Au final pour avoir le temps tu stoppes la boucle en changeant la valeur d'un booléen par exemple et tu récupères ta variable incrémentée avec une méthode du style getMillisCount().
              • Partager sur Facebook
              • Partager sur Twitter
              ⚙️ Une solution simple règle le problème ; une solution compliquée en crée un nouveau.
                3 décembre 2016 à 9:16:31

                 quetion:   La méthode duréeExécution ( ) :
                renvoie un double, permet de calculer la durée totale d'exécution, elle sera implémentée plus
                tard [dans les classes filles]
                mr6
                • Partager sur Facebook
                • Partager sur Twitter

                Mesurer le temps d'exécution

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown