calcul d'un intervalle de temps [C] - C++ - Programmation
Marsh Posté le 10-04-2002 à 08:42:19
Ben, je dirais (mais je suis pas spécialiste du C) que le temps de calcul entre deux opérations ne peut se faire qu'en récupérant la date système avant, puis la date système après. Reste à faire la soustraction. Problème est-ce que ces opérations ne vont sensiblement dégrader les perf...
Marsh Posté le 10-04-2002 à 08:46:10
J'apporte qq précisions supplémentaires.
C'est un pote qui doit réaliser un programme calculant le temps de réponse moyen d'un utilisateur.
Genre printf("question posée" ), puis scanf de ce que le user retourne et entre ces deux expressions, il doit calculer le temps qui s'est écoulé entre l'affichage (printf) de la question et la réponse (scanf).
Il a essayé avec la fonction difftime() mais avec cette fonction, il ne récupère semble-t-il que les secondes alors que lui cherche aussi à récupérer un résultat + précis
Marsh Posté le 10-04-2002 à 08:48:02
Il doit y avoir moyen de récupérer un équivalent du TIMESTAMP comme en SQL. Je peux pas mieux te dire, mais il doit y avoir moyen. Pourquoi est-ce que voulez mieux que la seconde comme unité de temps ?
Marsh Posté le 10-04-2002 à 08:50:17
Cherrytree a écrit a écrit : Pourquoi est-ce que voulez mieux que la seconde comme unité de temps ? |
C'est un exo qu'il a à rendre cette semaine, le sujet est de calculer le temps moyen de réponses posées à un utilisateur lambda. Précision du retour = en secondes + centièmes
Marsh Posté le 10-04-2002 à 08:54:18
T'es sous quel OS ?
Sous Windows, tu peux utiliser GetTickCount();
Tu fais comme l'as dit Cherrytree : un premier GetTickCount(), tu executes ton code, puis un second GetTickCount() auquel tu soustrait le premier. Tu obtiens le nombre de millisecondes ecoulees.
Marsh Posté le 10-04-2002 à 08:54:34
Ouais, mais la précision porte sur la moyenne, je ne pense pas que votre prof vous réclame les centièmes pour chaque requête, a priori sur des printf, scanf la précision est plutôt de l'ordre de la seconde.
Marsh Posté le 10-04-2002 à 09:03:22
Mon pote est sous Windows
la fonction GetTickCount() appartient à quelle librairie ?
Marsh Posté le 10-04-2002 à 09:11:26
C'est dans windows.h
Mais si c'est un exo du prof alors je pense pas que ce soit une bonne idee
d'utiliser cette fonction
Essaie de te depatouiller avec les fonction standard
Marsh Posté le 10-04-2002 à 10:38:51
Et en essayant GetTime() (issu du (bon)vieux DOS) ?
Syntax
#include <dos.h>
void gettime(struct time *timep);
Description
Gets the system time.
gettime fills in the time structure pointed to by timep with the system's current time.
The time structure is defined as follows:
struct time {
unsigned char ti_min; /* minutes */
unsigned char ti_hour; /* hours */
unsigned char ti_hund; /* hundredths of seconds */
unsigned char ti_sec; /* seconds */
};
Marsh Posté le 10-04-2002 à 12:15:57
NON TESTE mais ca devrait marcher quand même :
----------------------------------------------
#include <time.h>
#include <stdio.h>
void main(void) {
clock_t start; //le chrono pour le début
double the_time;
start = clock(); //on lance le compteur
LA_FONCTION_QUI_PREND_UN_CERTAIN_TEMPS();
//on recupere le temps mainenant!
the_time = (double)(clock()-start)/(double)(CLOCKS_PER_SEC);
//the_time contient maintenant le temps en secondes!
printf("Temps : %lf", the_time);
return;
}
[jfdsdjhfuetppo]--Message édité par ITM--[/jfdsdjhfuetppo]
Marsh Posté le 10-04-2002 à 12:40:09
Le point à vérifier sera (faut voir avec chaque fonction "temps" ) la granularité des infos.
Les fonctions qui se basent sur les ticks de l'horloge du 8253 font des bonds de 53 et qq millisecondes (sais plus exactement). On trouve donc 53, 106, 159, .. millisec. Les affichages avec des "tas de décimales" sont le résultat d'une division.
Si les durées sont longues, ça gène moins.
Faut tester avec boucles en faisant croître le nombre de tours. Ca permet de voir si ça semble réaliste, puis l'adopter.
Marsh Posté le 10-04-2002 à 08:21:26
Hello,
je cherche un moyen en C de calculer un intervalle de temps entre 2 opérations. Le résultat devrait m'afficher le temps avec les secondes MAIS AUSSI avec les dixièmes et les centièmes
Quelqu'un a-t-il une idée (avec un little example si bleussipo) ?
Merci !
---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO -> Google Pixel 9 PRO XL