[Plateformes] [unix] chopper le temps en millisecondes

Le côté programmation du développement d'un jeu vidéo.

[unix] chopper le temps en millisecondes

Messagepar Flamaros » 18 Sep 2005, 16:38

Voila je fais une application ou je dois evaluer le temps qui s'ecoule pour la realisation de diverses operations. Pour le moment j'utilise gettimeofday pour avoir le temps d'execution en micro secondes, puis j'applique une convertion pour l'avoir en millisecondes, Seulement la capacite des int n'est pas assez grande et j'ai des valeurs qui sont errone (depassement de la capacite de l'int) car je fais la difference entre l'heure de depart et celle apres le resultat des calculs. (je peux par exemple obtenir des valeurs negatives)

Donc si une personne connait le moyen de mesure le temps en millisecondes directement au sein d'un programme. C'est pour evaluer les performances de differents algorythmes.
L'amitie aussi ca compte.
Avatar de l’utilisateur
Flamaros
Hello World, I'm new !
 
Messages: 552
Inscription: 21 Juil 2005, 23:44

Messagepar MrGecko » 18 Sep 2005, 21:39

Tu peux utiliser un "long int" codé sur quatre octets, au lieu d'un "int" ?
Tu peux peut-être les utiliser, le temps de trouver autre chose...

a+
Avatar de l’utilisateur
MrGecko
Hello World, I'm new !
 
Messages: 1078
Inscription: 02 Mai 2005, 17:43
Localisation: Montpellier

Messagepar Flamaros » 18 Sep 2005, 22:16

Bien vu mais ca aurait ete trop facile, je suis souvent confronte a ce genre de pb et dans tout les cas jusqu'a present il me suffisait d'augmenter la capacite de la variable.

Cette fois je ne peux pas car la fonction remplis une structure avec des int alors impossible de faire autrement (sans doute qu'en interne elle utilise des int).

Mais merci quand meme.
L'amitie aussi ca compte.
Avatar de l’utilisateur
Flamaros
Hello World, I'm new !
 
Messages: 552
Inscription: 21 Juil 2005, 23:44

Messagepar Flamaros » 19 Sep 2005, 00:09

Bon meme si maintenant c'est trop tard (heure de rendu du projet depassee), je souhaite toujours savoir si quelqu'un a la solution.
L'amitie aussi ca compte.
Avatar de l’utilisateur
Flamaros
Hello World, I'm new !
 
Messages: 552
Inscription: 21 Juil 2005, 23:44

Messagepar deathangel » 19 Sep 2005, 07:34

t'as essayé la fonction GetTickCount() qui te renvoie un long représentant le nombre de millisecondes écoulées entre le 1er janvier 1979 et l'heure actuelle ?
Mais je crois qu'elle n'existe que sous Windows....
95% des problèmes informatiques se situent entre la chaise et le clavier
--> Créez votre robot chien : http://doggyproject.free.fr/
--> Gagnez des PACK+ gratuitement : http://www.packbarre.com/
--> S.U.S Tennis de table http://www.sus.asso.fr
Avatar de l’utilisateur
deathangel
Hello World, I'm new !
 
Messages: 963
Inscription: 10 Avr 2005, 08:50
Localisation: Strasbourg

Messagepar Flamaros » 20 Sep 2005, 16:01

J'ai fini par trouver la solution, elle etait dans le man, je ne l'avais pas lu en entier.
Deja dans la structure c'est bien des long, mais c'etait pas vraiment la qu'etait mon erreur. Les micro secondes bouclent jusqu'a atteindre une secondes, donc quand 1 000 000 de micro secondes se sont ecoule le compteur passe a 0 mais 1 secondes est ajoutee. En convertissant les secondes et les micro-secondes en milli-secondes et en additionnant le tout j'obtiens le bon resultat.

Normalement c'est portable vu que ca fait partie de la lib standart.
L'amitie aussi ca compte.
Avatar de l’utilisateur
Flamaros
Hello World, I'm new !
 
Messages: 552
Inscription: 21 Juil 2005, 23:44

Messagepar Lightness1024! » 17 Oct 2005, 18:45

justement les problemes de timers de précision c'est bien ce qui n'est pas portable :/

sinon ya SDL_GetTick()
Avatar de l’utilisateur
Lightness1024!
Hello World, I'm new !
 
Messages: 698
Inscription: 11 Avr 2005, 12:00
Localisation: paris

Messagepar MrCool » 17 Oct 2005, 21:26

Je vois ce dont tu parles...

A mon avis Flamaros a utilisé un gettimeofday() qui est *à peu près* portable.

En effet selon les archi il renvoit un long (ou là les problèmes de débordement se posent) ou bien un struct timeval qui est composé des deux champs qu'il a explicité.

Dans ce cas précis, viens plutôt sur le chan, ça te fera qqs chances en plus d'avoir ta réponse
Avatar de l’utilisateur
MrCool
Hello World, I'm new !
 
Messages: 1924
Inscription: 13 Mar 2005, 00:57
Localisation: Rouen / Paris

Messagepar Flamaros » 18 Oct 2005, 11:25

La SDL c'est bien mais il ne faut pas oublier que parfois elle utilise des trucs qui sont portables (ou quasiment), uniquement car c'est en rapport avec le reste. A mon avis meme pour ce qui n'est pas portable, la SDL doit utiliser des fonctions relativement proche pour que ca reste leget et rapide (moins de code specifique).

La seule difference selon les os c'est que la strcture timeval peux contenir soit directement deux long ou des typedef sur le type long (y a une diffenrce la?).

PS : je pense que quasiment la totalite des lib standard doivent etre porte correctement sous win.
L'amitie aussi ca compte.
Avatar de l’utilisateur
Flamaros
Hello World, I'm new !
 
Messages: 552
Inscription: 21 Juil 2005, 23:44


Retourner vers Programmation

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 15 invités