Retour à l'accueil
Accueil Aide Rechercher Calendrier Identifiez-vous Inscrivez-vous
Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.
Avez-vous perdu votre courriel d'activation?
17 Juin 2019 à 04:09

Connexion avec identifiant, mot de passe et durée de la session
Règlement | Grades du forum | L'équipe de modération | Album photo | Chat
Rechercher:     avancée
Forums Zelda Solarus  |  Jeux amateurs  |  Programmation  |  Topic: [Résolu] [C++] Mesure de temps en ms 0 Membres et 1 Invité sur ce sujet.
Pages: [1] Imprimer
Auteur Sujet: [Résolu] [C++] Mesure de temps en ms  (Lu 2052 fois)
iArcadia
Sheikah
*
Offline Offline

Messages: 4 821



Courriel
« le: 23 Novembre 2013 à 00:43 »

Bonsoir les solarussiens !

Voilà, je débute la programmation en C++ depuis le mois de septembre, et notre professeur a commencé à nous donner des micro-projets. Le premier est divisé en plusieurs étapes :
 1 : une appli qui donne le pourcentage de bonnes réponses sur une série de 30 multiplications
 2 : la même appli + on redemande le même calcul tant que l'utilisateur rentre une mauvaise réponse
 3 : une appli qui affiche le temps mit en ms pour effectuer chaque combinaison de multiplication (de 0*0, 0*1... à 9*10,10*10)

Les deux premières étapes ne m'ont pas spécialement posé de problèmes, mais la dernière est un peu plus chiante : impossible de trouver un moyen relativement simple pour nos connaissances actuelles de faire une mesure de temps en ms, et ce malgré me recherches ...

Il y a la librairie <chrono> qui a l'air pas mal mais je n'arrive pas à l'utiliser sous QtCreator 2.8.1. (il faut activer une option pour la compilation, et je ne sais pas si j'en ai le droit pour l'éval)
Les fonctions time et difftime de <ctime> marchent à merveilles, mais donnent un résultat en seconde.
Et j'ai lu plusieurs fois une certaine fonction "gettimeofday()", mais je n'arrive pas à l'utiliser sous QtCreator...

Voilà, donc si les rares programmeurs d'ici ont une petite idée, je suis preneur. :)
« Dernière édition: 23 Novembre 2013 à 01:11 par iArcadia » Journalisée
Morwenn
Sheikah
*
Offline Offline

Messages: 3 266


And so what?


WWW Courriel
« Répondre #1 le: 23 Novembre 2013 à 01:03 »

Ah ça oui, le C++11 est une petite merveille, <chrono> est un excellent ajout à la bibliothèque standard pour gérer tout ça. Ce serait bien pour toi d'y avoir le droit, mais d'expérience, je peux dire qu'énormément de prof en sont toujours au C++03 et au C89, donc bon...

Je ne vais faire que citer une réponse trouvée ailleurs sur internet, mais tu peux utiliser la macro CLOCKS_PER_SECOND présente dans le header <ctime>. Ça donnerait quelque chose comme ça :

Code: [Select]
#include <ctime>

clock_t time1 = clock();
// some code here
clock_t time2 = clock();
clock_t timediff = time2 - time1;

float timediff_sec = ((float)timediff) / CLOCKS_PER_SEC;

Sinon, tu peux regarder du côté des fonctions présentes dans les bibliothèques window ou POSIX, mais ça ne sera pas "standard" en ce sens que ça dépendra de la plate-forme :)
Journalisée

iArcadia
Sheikah
*
Offline Offline

Messages: 4 821



Courriel
« Répondre #2 le: 23 Novembre 2013 à 01:11 »

Ah bah c'est parfait merci Momo' ! :)

J'ai lu plusieurs articles/posts avec ce 'CLOCKS_PER_SEC' en cherchant sur Google, mais je comprenais rien à chaque fois, merci d'avoir rendu ça un peu plus clair. :D
Journalisée
retourduvendredi
Mojo
*
Offline Offline

Messages: 25


Courriel
« Répondre #3 le: 23 Novembre 2013 à 01:51 »

Sinon tu peux aussi incrementer une variable i dans 1 boucle et cronométrer pour savoir combien d'incrémentations il y a en une seconde, et ensuite tu divises.

exemple:

int i = 0;
while (1==1){
  i++;
  printf("%d", i);
}

Lance ce programme, et arrete le au bout d'1 seconde. Sur ma machine c'est:

zoe@ubuntu$ vim test.c
zoe@ubuntu$ gcc test.c
zoe@ubuntu$ ./a.out
[...]
Ctrl + C au bout d'1s
171895

Donc ensuite tu divises par 171895 et tu sais combien de secondes ce sont passées  :)


(si tu veux etre super precis fais ca 4-5 fois et ensuite fais la moyenne pour avoir la meilleure valeur... ca depend de quelle precision tu veux :) bon aller je vais me coucher moi)
Journalisée
iArcadia
Sheikah
*
Offline Offline

Messages: 4 821



Courriel
« Répondre #4 le: 23 Novembre 2013 à 02:04 »

Ouais, enfin ça fait quand même un joyeux bordel pour pas grand chose alors qu'il y a déjà des fonctions pour ce cas-là. :D
Et puis si l'appli tournait que sur ma machine ça irait, mais il y a des chances que je le fasse tourner sur différents mac/pc à l'université, et que le prof le fasse tourner sur son ordi personnel. :)
Journalisée
Pages: [1] Imprimer 
Forums Zelda Solarus  |  Jeux amateurs  |  Programmation  |  Topic: [Résolu] [C++] Mesure de temps en ms
Aller à:  

Propulsé par MySQL Propulsé par PHP Powered by SMF 2.0.15 | SMF © 2006, Simple Machines LLC XHTML 1.0 Transitionnel valide ! CSS valide !
Zelda Solarus 2009Skin par Eidarloy
Solarus-Games