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

Langage Java Discussion :

[débutant] savoir le temps d'exécution


Sujet :

Langage Java

  1. #1
    Membre éprouvé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Par défaut [débutant] savoir le temps d'exécution
    Salut tout le monde,

    voila j'aimerai savoir comment on peut afficher le temps d'execution d'une méthode toute simple comme celle-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	public int testTime(){
    		for(int i = 0; i <= 100000; i++){
    			System.out.println("Current tour is "+i);
    		}
    		return 0;
    	}
    J'ai chercher un peu et je sais que cest avec la class Timer mais je ne sais ps vraiment comment m'y prendre pour changer lol

    jai essayer de faire sa comme sa mais sa ne maffiche rien...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public Timer testTime(){
    		for(int i = 0; i <= 100000; i++){
    			System.out.println("Current tour is "+i);
    		}
    		return new Timer();
    	}
    merci pour votre aide

  2. #2
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par cyrill
    Salut tout le monde,

    voila j'aimerai savoir comment on peut afficher le temps d'execution d'une méthode toute simple comme celle-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	public int testTime(){
    		for(int i = 0; i <= 100000; i++){
    			System.out.println("Current tour is "+i);
    		}
    		return 0;
    	}
    J'ai chercher un peu et je sais que cest avec la class Timer mais je ne sais ps vraiment comment m'y prendre pour changer lol
    Même pas besoin de la classe Timer pour cela

    Tu peut tout simplement récupérer le temps avec currentTimeMillis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    long startTime = System.currentTimeMillis();
    Tu peut faire ça au début et à la fin et ensuite, tu soustrais le premier du deuxième et tu as le temps en ms d'éxécution de ta méthode

    Tu peut aussi utiliser System.nanoTime() pour avoir le temps en nanoseconde.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Par défaut
    comme ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public long testTime(){
    		long startTime = System.currentTimeMillis();
    		for(int i = 0; i <= 10000; i++){
    			System.out.println("Current tour is "+i);	
    		}
    		long endTime = System.currentTimeMillis();
    		long totalTime = endTime-startTime;
    		return totalTime;
    	}

  4. #4
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Exactement, ca te donnera le temps en ms qu'aura fait ta boucle pour s'éxécuter

  5. #5
    Membre éprouvé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Par défaut
    ok sa me rassure que j'ai au moins fais sa juste ! lol ! mais cette fonction System.currentTimeMillis(); renvoie un monstre nombre... c'est quoi ? cest comme le timestamp en php ???

  6. #6
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par cyrill
    ok sa me rassure que j'ai au moins fais sa juste ! lol ! mais cette fonction System.currentTimeMillis(); renvoie un monstre nombre... c'est quoi ? cest comme le timestamp en php ???
    Oui, c'est le timestamp en millisecondes

  7. #7
    Membre éprouvé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Par défaut
    il a aussi été lancer depuis le 01.01.1970 à minuit ?

  8. #8
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par cyrill
    il a aussi été lancer depuis le 01.01.1970 à minuit ?
    Oui, je viens d'aller vérifier dans la Javadoc

  9. #9
    Membre éprouvé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Par défaut
    ok merci ! lol pas penser a cette javadoc ! lol

    Sinon j'ai une autre question à propos de ma grille de Sudoku... J'aimerai bien pouvoir la remplir à l'aide de JOptionPane. J'ai penser de la manière suivante :

    - un JOptionPane pour chaque ligne
    - on sépare chaque nombres par une virgule
    - ensuite on split le JOptionPane à chaque virgule
    - et on insert chaque position de l'array créer par le split dans ma grille

    y'a une autre solution ???

  10. #10
    Membre éprouvé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Par défaut
    un développeur de chez moi vient de me dire qu'il pensait que ce n'était pas vraiment précis le temps d'exécution en ms surtout lorsqu'il reste en dessous des 20 ms... est-ce juste ? peut-on etre plus précis ?

  11. #11
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par cyrill
    un développeur de chez moi vient de me dire qu'il pensait que ce n'était pas vraiment précis le temps d'exécution en ms surtout lorsqu'il reste en dessous des 20 ms... est-ce juste ? peut-on etre plus précis ?
    Citation Envoyé par cyrill
    ok merci ! lol pas penser a cette javadoc ! lol
    Et bien c'est dans la doc : currentTimeMillis()
    La précision dépend du système d'exploitation...

    Sinon tu peux toujours tenter avec nanoTime() mais rien ne garantit que la précision soit forcément meilleure...

    a++

  12. #12
    Membre éprouvé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Par défaut
    hum je vois... pcq si je met une grille vraiment très simple a résoudre, des fois il me met 0 ms alors que évidemment cest impossible car il fait 3400 boucles...

    si j'utilise les nano sa me donnera un chiffre plus petit mais théoriquement pas plus précis si le problème vient de la machine...

  13. #13
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par cyrill
    hum je vois... pcq si je met une grille vraiment très simple a résoudre, des fois il me met 0 ms alors que évidemment cest impossible car il fait 3400 boucles...
    3400 boucles ce n'est pas grand chose (tout dépend de ton traitement à chaque itération). Si il te met 0 ms cela signifie que la durée du traitement est inférieur à la précision de la méthode currentTimeMillis() (la valeur n'est pas mis à jours entre les deux appels)

    Citation Envoyé par cyrill
    si j'utilise les nano sa me donnera un chiffre plus petit mais théoriquement pas plus précis si le problème vient de la machine...
    nanoTime() utilise normalement la meilleure précision disponible sur le système, et est généralement plus précis que currentTimeMillis().

    Une solution pour avoir une idée plus précise du temps d'exécution serait d'éffectuer le traitement plusieurs fois jusqu'à obtenir un temps assez conséquent (500 ms par exemple) qu'il suffira de diviser par le nombre d'itération...

    a++

  14. #14
    Membre éprouvé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Par défaut
    ouais je vois ! bon ce n'est pas le plus important detre précis mais cest juste un peu embétant lorsque il affiche 0 ms ... mais bon merci pour toutes ces informations

  15. #15
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par cyrill
    ouais je vois ! bon ce n'est pas le plus important detre précis mais cest juste un peu embétant lorsque il affiche 0 ms ... mais bon merci pour toutes ces informations
    Ben, s'il affiche 0ms, tu prends le temps en nanosecondes et tu as pas trop de risques d'avoir 0 ns

Discussions similaires

  1. Réponses: 9
    Dernier message: 20/06/2005, 13h17
  2. [C#] Calcul du temps d'exécution.
    Par lozzko dans le forum Windows Forms
    Réponses: 4
    Dernier message: 12/06/2005, 17h12
  3. Réponses: 2
    Dernier message: 25/05/2004, 16h33
  4. Affichage du temps d'exécution d'une requête
    Par milka dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 22/03/2004, 18h48
  5. Temps d'exécution des instructions FPU
    Par ubi dans le forum Assembleur
    Réponses: 2
    Dernier message: 24/10/2003, 19h39

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