robot

En programmation, il peut être utile de connaître le temps d’exécution d’une portion de code. Je vous propose une simple classe Java qui simule un chronomètre.

Utilisation

Chrono chrono = new Chrono();
chrono.start(); // démarrage du chrono
// ...
// code à chronométrer
// ...
chrono.pause(); // on peut faire une pause
// ...
chrono.resume(); // reprise du chrono
// ...
chrono.stop(); // arrêt
System.out.println(chrono.getDureeMs()); // affichage du résultat en millisecondes
System.out.println(chrono.getDureeSec()); // affichage en secondes
System.out.println(chrono.getDureeTxt()); // affichage au format "1 h 26 min 32 s"

Voici la classe Java à ajouter à votre projet :

public class Chrono {

    private long tempsDepart=0;
    private long tempsFin=0;
    private long pauseDepart=0;
    private long pauseFin=0;
    private long duree=0;

    public void start()
        {
        tempsDepart=System.currentTimeMillis();
        tempsFin=0;
        pauseDepart=0;
        pauseFin=0;
        duree=0;
        }

    public void pause()
        {
        if(tempsDepart==0) {return;}
        pauseDepart=System.currentTimeMillis();
        }

    public void resume()
        {
        if(tempsDepart==0) {return;}
        if(pauseDepart==0) {return;}
        pauseFin=System.currentTimeMillis();
        tempsDepart=tempsDepart+pauseFin-pauseDepart;
        tempsFin=0;
        pauseDepart=0;
        pauseFin=0;
        duree=0;
        }
        
    public void stop()
        {
        if(tempsDepart==0) {return;}
        tempsFin=System.currentTimeMillis();
        duree=(tempsFin-tempsDepart) - (pauseFin-pauseDepart);
        tempsDepart=0;
        tempsFin=0;
        pauseDepart=0;
        pauseFin=0;
        }        

    public long getDureeSec()
        {
        return duree/1000;
        }
        
    public long getDureeMs()
        {
        return duree;
        }        

    public String getDureeTxt()
        {
        return timeToHMS(getDureeSec());
        }

    public static String timeToHMS(long tempsS) {

        // IN : (long) temps en secondes
        // OUT : (String) temps au format texte : "1 h 26 min 3 s"

        int h = (int) (tempsS / 3600);
        int m = (int) ((tempsS % 3600) / 60);
        int s = (int) (tempsS % 60);

        String r="";

        if(h>0) {r+=h+" h ";}
        if(m>0) {r+=m+" min ";}
        if(s>0) {r+=s+" s";}
        if(h<=0 && m<=0 && s<=0) {r="0 s";}

        return r;
        }

    } // class Chrono