Temps d'execution en secondes

Résolu
soheil - 19 avril 2016 à 14:13
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 19 avril 2016 à 14:53
Bonjour,

je souhaite calculer le temps d'execution d'une methode "executeAlgo()" j'ai utilisé alors :

if(e.getSource() == execute) {
long tempsDebut = System.currentTimeMillis();
executeAlgo();


long tempsFin = System.currentTimeMillis();
float seconds = (tempsFin - tempsDebut) / 1000F;

System.out.println("Opération effectuée en: "+ Float.toString(seconds) + " secondes.");

mais il me donne que maximum 3 chiffres apres la virgule et des fois c'est carrement 0.0 ??!!??

3 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
19 avril 2016 à 14:45
Salut,

Si tu veux une plus grande précision il faut utiliser un double et non un float.

Pour ce qui est du 0 sec... ça dépend de ce que fait ta méthode (qui peut n'être quantifiable qu'en nano)
import java.util.Random;


public class Time {
  
  private static void executeAlgo15() throws InterruptedException{
    Thread.sleep(1500);
  }
  private static void executeAlgoRand() throws InterruptedException {
    Thread.sleep(new Random().nextInt(1000));
  }
  private static void executeAlgoFast() { }

  public static void main(String[] args) throws InterruptedException {
    long tempsDebut, tempsFin;
    double seconds;
    
    /* test à 1.5 sec */
    tempsDebut = System.currentTimeMillis();
    executeAlgo15();
    tempsFin = System.currentTimeMillis();
    seconds = (tempsFin - tempsDebut) / 1000F;
    System.out.println("Opération effectuée en: "+ Double.toString(seconds) + " secondes.");

    /* test rand avec un max de 1 sec */
    tempsDebut = System.currentTimeMillis();
    executeAlgoRand();
    tempsFin = System.currentTimeMillis();
    seconds = (tempsFin - tempsDebut) / 1000F;
    System.out.println("Opération effectuée en: "+ Double.toString(seconds) + " secondes.");
    
    /* test rapide en ms toujours à 0 */
    tempsDebut = System.currentTimeMillis();
    executeAlgoFast();
    tempsFin = System.currentTimeMillis();
    seconds = (tempsFin - tempsDebut) / 1000F;
    System.out.println("Opération effectuée en: "+ Double.toString(seconds) + " secondes.");
    
    /* meme test mais en nano */
    tempsDebut = System.nanoTime();
    executeAlgoFast();
    tempsFin = System.nanoTime();
    seconds = (tempsFin - tempsDebut) / 1000000F;
    System.out.println("Opération effectuée en: "+ Double.toString(seconds) + " secondes.");
  }
}

2
Rejoignez-nous