begin process at 2012 02 12 03:13:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

decompte du temps


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

decompte du temps

vendredi 21 avril 2006 à 18:54:12 | decompte du temps

florian1121

Bonjiours, je recherche une fonction qui effecturait un decompte du temps en lancant le programme et ensuite je cherche un moyen d'obtenir le temps qu'a durée une certaine periode déterminer! EX: entre la 15iéme et la 20iéme secondes il s'est ecoulé 5 seconde!!! J'ai des piste qui parle d'une fonction clock() et d'une autre appeller "clock_per_sec" mais je ne parvient pas a m'en servir!!!
vendredi 21 avril 2006 à 19:44:43 | Re : decompte du temps

bayeto

Membre Club
ya bien la fonction C time (time.h), mais je suis pas sûr que c'est ce que tu cherche...
vendredi 21 avril 2006 à 20:45:35 | Re : decompte du temps

AlexN

c'est une fonction qui m'a servi a evaluer le temps d'execution d'un programme avec different algos. Il y a des trucs qui ne te serviront à rien mais peut etre y a t il quelques idees a prendre. #include #include #include #include /******************************************************************************/ /* Gestion d'un chronometre pour evaluer les performances du programme */ /******************************************************************************/ //#include "global.h" //#include "chrono.h" #include #define VRAI (1) #define FAUX (0) typedef enum { TZERO, DEPINI, FININI, DEPMC, FINMC, DEPFS, FINFS, DEPTRI, FINTRI, DEPAFF, FINAFF, DEPLIB, FINLIB, TZZ } StatutDuProgramme; typedef enum { METHODELEX = 1, METHODEPRJ, METHODELP, METHODEARB, METHODELA, METHODEPA, METHODELAP, METHODENUL } Methode; clock_t TZero = 0, TDepInitialisation = 0, TFinInitialisation = 0, TDepFichierMotsClefs = 0, TFinFichierMotsClefs = 0, TDepFichierSource = 0, TFinFichierSource = 0, TDepTri = 0, TFinTri = 0, TDepAffichage = 0, TFinAffichage = 0, TDepLiberation = 0, TFinLiberation = 0; void AfficherTempsFormate (clock_t n) { if ( n < 1000 ) printf ("%d", n); else { AfficherTempsFormate (n / 1000); printf (" %03d", n - 1000 * (n / 1000)); } } typedef enum { NANOSECONDE, PICOSECONDE, MICROSECONDE, MILLISECONDE, SECONDE, HEURE, JOUR } DivTemps; void ConvertirClockEnTemps (clock_t NbClocks, clock_t TTClocks) { register clock_t Temps, Ecoule; register int base = (CLOCKS_PER_SEC >= 1000000) ? MICROSECONDE : (CLOCKS_PER_SEC >= 1000) ? MILLISECONDE : SECONDE; register DejaEcrit = FAUX; /* Convertir les NbClocks en secondes */ Ecoule = NbClocks; Temps = NbClocks / CLOCKS_PER_SEC; TTClocks /= CLOCKS_PER_SEC; if ( Temps < 60*60*24 && TTClocks < 60*60*24) goto ConvertirHeure; if ( Temps >= (60*60*24) ) { printf ("%3d J ", Temps / (60*60*24) ); Ecoule -= ((Temps / (60*60*24)) * (60*60*24)) * CLOCKS_PER_SEC; Temps -= (Temps / (60*60*24)) * (60*60*24); DejaEcrit = VRAI; } else printf (" "); ConvertirHeure: if ( Temps < 60*60 && TTClocks < 60*60 && !DejaEcrit ) goto ConvertirMinute; if ( Temps >= (60*60) ) { printf ("%2d h ", Temps / (60*60)); Ecoule -= ((Temps / (60*60)) * (60*60)) * CLOCKS_PER_SEC; Temps -= (Temps / (60*60)) * (60*60); DejaEcrit = VRAI; } else if ( DejaEcrit ) printf (" 0 h "); else printf (" "); ConvertirMinute: if ( Temps < 60 && TTClocks < 60 && !DejaEcrit ) goto ConvertirSecondes; if ( Temps >= 60 ) { printf ("%2d min ", Temps / 60); Ecoule -= ((Temps / 60) * 60) * CLOCKS_PER_SEC; Temps -= (Temps / 60) * 60; DejaEcrit = VRAI; } else if ( DejaEcrit ) printf (" 0 min "); else printf (" "); ConvertirSecondes: if ( Ecoule < CLOCKS_PER_SEC && TTClocks == 0 && !DejaEcrit ) goto ConvertirMillisecondes; if ( Ecoule >= CLOCKS_PER_SEC ) { printf ("%2d s ", Ecoule / CLOCKS_PER_SEC); Ecoule -= (Ecoule / CLOCKS_PER_SEC) * CLOCKS_PER_SEC; Temps -= Temps / CLOCKS_PER_SEC; DejaEcrit = VRAI; } else if ( DejaEcrit ) printf (" 0 s "); else printf (" "); ConvertirMillisecondes: if (Temps != 0 && Ecoule == 0) return; /* traiter les millisecondes */ if (base < SECONDE) { if (Ecoule >= CLOCKS_PER_SEC/1000 && Ecoule != 0) { printf ("%3d ms ", Ecoule / (CLOCKS_PER_SEC/1000)); Ecoule -= (Ecoule / (CLOCKS_PER_SEC/1000)) * (CLOCKS_PER_SEC/1000); DejaEcrit = VRAI; } else if ( DejaEcrit ) printf (" 0 ms "); else printf (" "); } /* traiter les microsecondes */ if (base < MILLISECONDE) { if (Ecoule > CLOCKS_PER_SEC/1000 && Ecoule != 0) { printf ("%3d mms ", Ecoule/1000); Ecoule -= (Ecoule/1000) * 1000; DejaEcrit = VRAI; } else if ( DejaEcrit ) printf (" 0 mms "); else printf (" "); } printf ("("); if (NbClocks) { AfficherTempsFormate(NbClocks); printf (" clocks"); } else printf("hors capacite"); printf(")\n"); } clock_t LireLeChrono (StatutDuProgramme NumStat) { switch (NumStat) { case TZERO : return TZero = clock(); break; case DEPINI: return TDepInitialisation = clock(); break; case FININI: return TFinInitialisation = clock(); break; case DEPMC : return TDepFichierMotsClefs = clock(); break; case FINMC : return TFinFichierMotsClefs = clock(); break; case DEPFS : return TDepFichierSource = clock(); break; case FINFS : return TFinFichierSource = clock(); break; case DEPTRI: return TDepTri = clock(); break; case FINTRI: return TFinTri = clock(); break; case DEPAFF: return TDepAffichage = clock(); break; case FINAFF: return TFinAffichage = clock(); break; case DEPLIB: return TDepLiberation = clock(); break; case FINLIB: return TFinLiberation = clock(); break; default : break; } } void AfficherLesResultatsDuChrono (int Methode) { #define TT (TFinLiberation - TDepInitialisation) printf ("\nTemps d'execution :\n"); switch (Methode) { case METHODEPRJ: case METHODEARB: printf ("Initialisation : "); ConvertirClockEnTemps(TFinInitialisation - TDepInitialisation, TT); printf ("Lecture des mots clefs : "); ConvertirClockEnTemps(TFinFichierMotsClefs - TFinInitialisation, TT); printf ("Tri : "); ConvertirClockEnTemps(TFinTri - TFinFichierMotsClefs, TT); printf ("Lecture du fichier source : "); ConvertirClockEnTemps(TFinFichierSource - TFinTri, TT); printf ("Affichage : "); ConvertirClockEnTemps(TFinAffichage - TFinFichierSource, TT); printf ("Liberation des ressources : "); ConvertirClockEnTemps(TFinLiberation - TFinAffichage, TT); break; case METHODELEX: printf ("Initialisation : "); ConvertirClockEnTemps(TFinInitialisation - TDepInitialisation, TT); printf ("Lecture du fichier source : "); ConvertirClockEnTemps(TFinFichierSource - TFinInitialisation, TT); printf ("Tri : "); ConvertirClockEnTemps(TFinTri - TFinFichierSource, TT); printf ("Affichage : "); ConvertirClockEnTemps(TFinAffichage - TFinTri, TT); printf ("Liberation des ressources : "); ConvertirClockEnTemps(TFinLiberation - TFinAffichage, TT); break; } printf ("TEMPS TOTAL POUR LA METHODE : "); ConvertirClockEnTemps(TT, TT); } #undef TT void AfficherLeTempsFinal (void) { clock_t t; printf ("\nTemps total d'execution : "); ConvertirClockEnTemps(t = clock() - TZero, t); } /******************************************************************************/ /******************************************************************************/ /* main() : */ /* Fonction principale qui appelle tout le monde */ /******************************************************************************/ /******************************************************************************/ int main (int argc, char **argv) { int i = 1; /* indice de l'argument suivant a lire */ register int err = EXIT_SUCCESS; LireLeChrono(TZERO); /* Initialiser le chronometre */ for (i = 0; i < 1000000; i++); // Par exemple AfficherLeTempsFinal(); /* Fin du chrono */ return err; }
vendredi 21 avril 2006 à 21:18:19 | Re : decompte du temps

AlexN

Attention code pas trop portable la macro CLOCK_PER_SEC est dependant de la machine si je me souviens bien (tous les processeurs ne font pas le même nombre de clicks en 1 seconde).
vendredi 21 avril 2006 à 21:21:34 | Re : decompte du temps

florian1121

ok, merci!! je suis en train d'essayer d'afficher le temps en seconde qui defile sur la console mais je doit oublier quelque chose!peut tu me le dire!! voici la fonction : void main () {int n,i; n=100; for(i=0;i
vendredi 21 avril 2006 à 21:23:39 | Re : decompte du temps

florian1121

non en fait probleme resolut!! mais progression d chiffre en milliseconde , comment faire l'avoir en seconde?
vendredi 21 avril 2006 à 21:28:08 | Re : decompte du temps

florian1121

Réponse acceptée !
Probleme a nouveau resolut voici la fonction qui marche: void main () {int n,i; n=100; i=clock_t()/CLOCKS_PER_SEC; for(i=0;i
vendredi 21 avril 2006 à 21:28:41 | Re : decompte du temps

AlexN

la conversion des clocks machine en temps "human readable" est dans la fonction ConvertirClockEnTemps()
vendredi 21 avril 2006 à 21:33:22 | Re : decompte du temps

florian1121

dans quelle bibliotheque machine se trouve t-elle cette fonction? ou plutot comment la faire marcher?
vendredi 21 avril 2006 à 21:37:59 | Re : decompte du temps

AlexN

lol fais un copier coller de ma réponse plus haut include

1 2

Cette discussion est classée dans : fonction, temps, decompte, clock


Répondre à ce message

Sujets en rapport avec ce message

faire une boucle avec un temps d'attente ? [ par andrealphus ] 4ndr&@lphu$slt encore...voila cette fois ci je voudrais récupérer des données, via une fonction que je connais déja, tous les X temps...j'envisage dc méthodes temporelles [ par funkadelic ] J'aimerai tout simplement boucler sur une fonction pendant un temps t du style "while ( temps_ecoule != temps_voulu ) fonction_run();Quelqu'un connait Chronometrer le temps d'éxecution d'une fonction en C [ par poiuytrez3 ] Bonjour, je cherche comment chronometrer le temps d'éxecution d'un tri. Je sais qu'il faut utiliser le fichier time.h avec la fonction time(), j'ai e Pb de la fonction clock sous mandrake 9.1 [ par kobee12 ] Salut j'utilise la fonction clock() dans un prgm sous linux (KDevelop).Seulement quand je l'execute il reste toujours a 0.J'ai teste sous windows et c Fonction calcule temps entre deux évenements [ par h_adil ] Bonjourje cherche une fonction en C++ qui permet de calculer le temps entre deux évenements par exemple le temps entre l'appuis entre touche.cordialem temps d'execution d'un programme [ par othland ] slt tlm: je veux calculer le temps d'execution d'une portion de programme, pour cela j'ai utilisé ce qui suit://////////////////////////// clock_t t1, probleme utilisation de K_clock [ par sy3ns ] c'st une question assez simple je voudrais savoir qu'elle est l'instruction qui me permettrait de faire defiler un texte ou de le faire apparaitre au K_CLOCK [ par sy3ns ] je voudrais pouvoir afficher le temps que met un joueur pour jouerj'elabore un petit jeule temps commence a défiler(et jaimerais le voir voir avancer) détécter l'appuit des fleches [ par florian1121 ] bonjours il m'est deman der dans le cadre de mes étude de realisé un projet d'informatique! seulement mon tres faible niveau ne me ^permet pas d'y par Temps d'éxecution. [ par NueclearSnake ] Bonjour, j'iamerais calculer le temps d'exécution d'une de mes fonctions.J'ai essayé et je trouve tout le temps 0;J'ai donc enlevé toutes mes fonction


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,966 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales