Un simple exemple du: comment calculer le temp d'exécution pour optimisation ou autre ... Code en C
Source / Exemple :
/*
Fichier chrono.h
#ifndef CHRONO_H
#define CHRONO_H
#include <stdio.h>
#include <time.h>
#if defined(__cplusplus) && __cplusplus
extern "C" {
#endif
/* Pour s'assurer que clock_t soit bien définie */
#ifndef _CLOCK_T_DEFINED
typedef long clock_t;
#define _CLOCK_T_DEFINED
#endif
static clock_t STARTCLOCK;
static clock_t ENDCLOCK;
#define StartClock() STARTCLOCK=clock();
#define StopClock() ENDCLOCK=clock();
static void ShowClock(char * prefix, short show_unformated) {
printf("\n*****************************************************\n");
if ( prefix != NULL ) {
printf("-- %s --\n", prefix);
}
printf("Elapsed time: %4.2f\n", (double) ( ( ENDCLOCK - STARTCLOCK ) / CLOCKS_PER_SEC ));
if ( show_unformated == 1 ) {
printf("Unformated: %d\n", (ENDCLOCK - STARTCLOCK));
}
printf("*****************************************************\n");
}
#if defined(__cplusplus) && __cplusplus
}
#endif
#endif /* Fin du fichier chrono.h */
/*
Comment l'utiliser !? C'est simlpe, très simple
#include <string.h>
#include "chrono.h"
int main(int argc, char* argv[]) {
char machaine[50];
int i = 0;
StartClock(); /* Début */
for ( ; i < 5000; i++ ) {
strcpy(machaine, "une chaine a copier ici");
}
StopClock(); /* Fin */
ShowClock("strcpy() test", 1); /* affiche le résultat */
/* C'est tout! Simplement 3 petites lignes */
return 0;
}
Conclusion :
Devrait fonctionner sous la plupart des compilateurs C/C++ ou les fonctions clock() et printf() existe ... stdio.h(printf) et time.h(clock) sont requis.
13 janv. 2007 à 22:13
16 avril 2004 à 03:16
StartClock();
// instructions ...
StopClock();
ShowSlock("prefix ici, sinon NULL", 0 ou 1);
tout simplement, StartClock() et StopClock() sont des #define donc
StartClock(); // sera remplacé par STARTCLOCK = clock();
et
StopClock(); // sera remplacé par ENDCLOCK = clock();
et le ShowClock() est une petite fonction qui permet d'afficher le résultat tout simplement ...
~(.:: NitRic ::.)~
14 avril 2004 à 21:02
#include <time.h>
void main()
{
clock_t D,F;
D=clock();
instruction...
F=clock();
printf("Temps=%f\n\r",(F-D)/CLK_TCK);
}
J'utilse ceci car pour moi je trouve que c'est rapide.
Voilà pour ma part,
Pacifica.
11 avril 2004 à 18:24
typedef unsigned long DWORD;
un entier non signé 32bits ... un int est(par défaut) signé
ca peut servir à éviter par exemple: signed/unsigned mismatch
qui n'est qu'un warning mais bon ...
11 avril 2004 à 18:18
time() renvoie l'heure, si ton process perd dison .03 sec de temp CPU à cause d'un autre programme ou autre, le temp d'exécution de ton programme va être .03 sec plus haut en utilisant time(), même chose pour GetTickCount() qui renvoie le uptime de Windows. clock() renvoie le temp CPU utilisé par le process appellant sans compter le temp CPU utilisé par d'autre process, si les autres process en cours font perdre .03 sec à ton process, ce .03 sec ne sera pas calculé avec clock(), ce qui est, à mon avis, plus précis que GetTickCount() & time() ...
En plus, mon code, d'après mes connaissances, est portable, Windows, Linux/Unix, Mac, etc ... un simple copier/coller et hop! le tour est joué!
~(..: NitRic ::.)~
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.