bonjour;
comment pourrais je calculer le temps d'execution d'un programme developpé en c sous windows??
est ce qu'il y a une fonction qui fait ca calclul ou est ce que je dois developpez moi meme le code qui permet ce calcul?
merci d'avance
bonjour;
comment pourrais je calculer le temps d'execution d'un programme developpé en c sous windows??
est ce qu'il y a une fonction qui fait ca calclul ou est ce que je dois developpez moi meme le code qui permet ce calcul?
merci d'avance
Si tu veux connaître le temps processeur exact, tu peux utiliser GetProcessTimes().
Sinon, je ne crois pas que Windows offre grand-chose d'autre pour fournir clé en main le temps d'exécution du programme: Il faudra utiliser les fonctions donnant l'heure actuelle et faire une soustraction...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
voir l'exemple en C cité dans mon code fourni ici :
http://www.developpez.net/forums/sho...d.php?t=324756
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".
Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java
Je ne réponds pas aux MP techniques
j ai testé votre code qui permet de calculer le temps d'execution mais il m donne l'erreur suivante:
Cannot open include file: 'sys/time.h'
le fichier n existe po sur l disq dur !
comment pourrais je resoudre ce probleme?
Merci
En effet, sys/time.h n'existe pas sous Win32.
Souviron34, tu t'es encore gouré...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Je te retourne le compliment, j'utilise mingw sous windows et j'ai un un fichier sys/time.h !Envoyé par Médinoc
C'est une extension MinGW, tout comme <dirent.h>.
L'autorité, ce n'est pas le SDK MinGW, mais le SDK fourni par les auteurs de Windows...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Envoyé par Médinoc
je suis désolé, mais si Windows ne suis pas le standard C "de facto" ....
http://www.gnu.org/software/libc/man...-an-Alarm.html
Donc disponible sous toutes les versions de *n*x..The setitimer function is the primary means for setting an alarm. This facility is declared in the header file sys/time.h. The alarm function, declared in unistd.h, provides a somewhat simpler interface for setting the real-time timer.
C'est également déclaré dans Mingw, dans CodeBlocks ....
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".
Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java
Je ne réponds pas aux MP techniques
Ton manuel n'est pas standard, mais GNU.
Le standard C ne connait aucun header dans le sous-dossier "sys".
La plupart des headers dans sys sont des headers POSIX ou GNU, ce que Windows n'a aucune obligation de fournir.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
ET ???
le P.O dit qu'il développe sous Windows, pas avec quoi.....
Si c'est avec MingW, cygwin, ou avec CodeBlock comme bcp ici, ça passe. Maintenant je ne dis pas que j'ai fourni un code pour TOUS les OS. Mais comme je sais bien que Windows n'est pas conforme à l'usage usuel, et que je ne le connais que peu et n'ai que peu envie de le connaître, je réponds avec ce que je sais...
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".
Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java
Je ne réponds pas aux MP techniques
Je ne suis même pas certain que ça marche vraiment sous MinGW, car Windows ne supporte pas SIGALRM.
Il serait intéressant de tester...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
perso j'ai toujours fait:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 #include <time.h> long deb,fin; deb=clock(); //... //... TACHES //... fin=clock(); printf("temps=%lf sec\n",(double)((double)(fin-deb))/CLOCKS_PER_SEC);
winsplit revolution mon soft
oui, mais reptils si tu regardes les man pages il y a 3 inconvénients majeurs à ton code :
1) le plus important, cela donne le temps "user", pas le temps absolu (c'est à dire cela donne le temps passé lorsque ton programme TOURNE, pas lorsqu'il est "swappé" parce qu'un autre programme est en haut).
2) dès que tu dépasses une certaine limite (que je n'ai plus en tête), tu dépasses la capacité de stockage (exemple : si tu veux faire un test sur 2 heures ou 24 heures, ça ne marche plus)
http://www.linux-kheops.com/doc/man/...3/clock.3.html
La norme C99 dit :Le standard C autorise une valeur quelconque pour clock() au début du programme, il faut donc utiliser la différence entre la valeur actuelle et celle renvoyée par clock() au lancement du programme, pour obtenir une portabilité maximale. Notez que la valeur peut revenir à zéro. Sur un système 32 bits, lorsque CLOCKS_PER_SEC vaut 1000000, cette fonction redonnera les mêmes valeurs toutes les 72 minutes environ.
et GNU dit (http://www.gnu.org/software/libc/man.../CPU-Time.html) :1 #include <time.h>
clock_t clock(void);
Description
2 The clock function determines the processor time used.
Returns
3 The clock function returns the implementation’s best approximation to the processor time used by the program since the beginning of an implementation-defined era related only to the program invocation. To determine the time in seconds, the value returned by the clock function should be divided by the value of the macro CLOCKS_PER_SEC. If the processor time used is not available or its value cannot be represented, the function eturns the value (clock_t)(-1).269)
3) Et enfin le CLOCK_PER_SEC est une valeur définie en dur (dans time.h).This function returns the calling process' current CPU time. If the CPU time is not available or cannot be represented, clock returns the value (clock_t)(-1).
Ce qui signifie que si tu changes de processeur, ou si le processeur n'est pas enregistré dans la distribution, ou si tu n'as pas mis le bon flag de compil avec la bonne architecture, en bref dans le cas général, la VRAIE valeur de l'horloge et le CLOCK_PER_SEC ne correspondent pas, et donc la mesure est fausse.
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".
Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java
Je ne réponds pas aux MP techniques
ok merci je ne savais pas tout ça.
winsplit revolution mon soft
Je ne peux pas utiliser la fonction clock() à cause des raisons que vous venez de citer , la fonction gettimeprocessing non plus à cause du fichier sys/time.h !
est ce qu'il n y a pas un autre moyen??
Merci
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager