Chronometre

developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 - 30 mai 2006 à 09:29
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 - 6 juin 2006 à 14:42
Bonjour tout le monde

Je rélise un chronomêtre pour des programme de tri.

Voivi le tes  code.

Avant le tris

public void begin() {
  startTime = System.nanoTime();
}

Apres le tri

public void stop() {
  tmp = System.nanoTime() - startTime;
 
    t=tmp;
    t= t * 0.000000001;



}

Voici le résultat


Le tri à mis 34083.0 de temps en seconde de tris



Un tri ne mêttré pas autant de temps.

mon probleme est la conversion de nanoseconde en seconde.

Pouvez vous m'aider.

Merci

Cordialement

A bientôt

5 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
30 mai 2006 à 10:06
Salut,


tu peux faire comme ceci


private static final double NANOSEC = (double)1000000000;


long startTime = System.nanoTime();

//tri

long estimatedTime = (System.nanoTime() - startTime);

double res = estimatedTime/NANOSEC;

System.out.println(res + " secondes");

//ou

System.out.println((double)estimatedTime/1000000000 + " secondes");

WORA
0
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 1
30 mai 2006 à 10:39
Re

Voici ce que j'ai moddifié.

double t= (double)1000000000;



double second;





public void stop() {
  tmp = System.nanoTime() - startTime;
 
   second = tmp/t;



}


il affiche ca.

J'aurai du peut être mettre le type long.

Le tri à mis 3.4362E-5 de temps en seconde de tris

A+
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
30 mai 2006 à 12:00
Bon on reprend calmement :P


//cette variable permet la conversion de nanosecondes en secondes

//dans 1 seconde il y a 1 000 000 000 de nano seconde (cette variable doit impérativement etre de type double

private static final double NANOSEC = (double)1000000000;


//récupération du temp de départ en long

long startTime = System.nanoTime();


//ici tu fais ton algo de tri ou autre chose


//calcule de la durrée d'execution de ce qui se trouve entre startTime et estimatedTime

//ici on recupere le temp en nano seconde soit dans un long

long estimatedTime = (System.nanoTime() - startTime);


//calcule du temps en seconde

double res = estimatedTime/NANOSEC;

System.out.println(res + " secondes");

//ou

System.out.println((double)estimatedTime/1000000000 + " secondes");

le respect des types est important

WORA
0
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 1
30 mai 2006 à 18:29
Bonsoir

Voici tout le code tri insertion.

import java.awt.*;





public class Triinssertion



{



String name;




 



long startTime;



private static final double t= (double)1000000000;



  double second;



int [] tab = new int [10];





int j,i,k,a,b,mem,longueur,compt;





float tmp=0;



long tmps= 0L;





public Triinssertion()
{



System.out.println("Entrer votre prenom");
name=Lire.S();



System.out.println();
System.out.println("Bienvenue sur le programme tri par insertion " + name);



System.out.println();



System.out.println("Entrer 10 entiers dans le désordre");
System.out.println();
for(a=0;a<tab.length;a++)
{



System.out.println("entier " + (a+1));



tab[a]=Lire.i();



}
System.out.println();
System.out.println("Voici l'ordre des entiers que vous avez donnees ");
System.out.println();



for(b=0;b<tab.length;b++)
{
System.out.print(tab[b] + " ");
}
System.out.println();



}




 





public void tri(){





longueur=tab.length;




 



for(j=1; j<longueur;j++)
{



mem=tab[j];
i=j;



 while(i>0 && mem<tab[i-1])



 {



 tab[i]=tab[i-1];
 i=i-1;



 }



 tab[i]=mem;



}



}



public void affiche()
{
System.out.println();
System.out.println("Affichage fait apres le tri");
System.out.println();



for(b=0;b<tab.length;b++)
{
System.out.print(tab[b] + " ");
}
System.out.println();
System.out.println();
}




 




 



public void begin() {
  startTime = System.nanoTime();
}




 





public void stop() {
  tmp = System.nanoTime() - startTime;
 
   second = tmp/t;



}




 




 




 



public static void main(String[] args) {




 



Triinssertion tri = new Triinssertion();





tri.begin();



tri.tri();



tri.stop();





tri.affiche();





System.out.println("Le tri à mis " + tri.second  + " de temps en seconde de tris" );
System.out.println();
System.out.println("Tri par insertion terminé " + tri.name);



}



}





Là il met

Le tri à mis 4.0508E-5 de temps en seconde de tris

Je dois modiffier quel que chose mai j'ignore quoi.

A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 1
6 juin 2006 à 14:42
Bonjour tout le monde

Personne n'a d'idée pour mon chrono

A +
0
Rejoignez-nous