[C] calcul d'un intervalle de temps

calcul d'un intervalle de temps [C] - C++ - Programmation

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
Reply

Marsh Posté le 10-04-2002 à 08:21:26   

Reply

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...

Reply

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


---------------
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
Reply

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 ?

Reply

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


---------------
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
Reply

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.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

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.

Reply

Marsh Posté le 10-04-2002 à 09:03:22    

Mon pote est sous Windows
la fonction GetTickCount() appartient à quelle librairie ?


---------------
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
Reply

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 ;)


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

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 */
};

Reply

Marsh Posté le 10-04-2002 à 10:38:51   

Reply

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]


---------------
iteme.free.fr | Mon feedback
Reply

Marsh Posté le 10-04-2002 à 12:40:09    

Le point à vérifier sera (faut voir avec chaque fonction "temps" ) la granularité des infos. :fou:  
 
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. :love:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed