Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Calculer une durée en millisecondes (en C)


Messages recommandés

Posté(e)

Ben voila, j'y arrive pas. Le temps m'est toujours donné en seconde, avec plein de virgules quand j'utilise time. Merci de m'aider. Ce serait vraiment bien que ce soit quelque chose de standard.

 

PS: je suis vraiment pris à la gorge niveau temps, ce serait vraiment super de répondre rapidement.

Posté(e)

pas de pot, time_t c'est rien de plus que le nombre de secondes écoulées depuis le 1er janvier 1970, donc tu n'auras pas le temps en millisecondes avec un time_t. Mais en foullant dans time.h tu trouveras peut-être un timespec ou un timeval (avec des nanosecondes et des microsecondes), peut-être que...

Posté(e)

Ah ok, je vois mieux le problème !

Finalement, j'ai utilisé clock(), avec une division par CLOCK_PER_SEC (et transformation en float avant du time_t), et ça me donne un résultat en millisecondes en multipliant par 1000. C'est standard et correct comme méthode (le temps servant pour des comparaisons, l'imprécision de la mesure a pas trop d'importance) ?

J'ai testé qu'avec GCC 3.1, j'ai pas d'autres compilo installés (enfin je peux en installer un autre).

Posté(e)

N'ayant jamais travaillé en-deça de la précision à la seconde (même sous Oracle, où pourtant ça serait pas mal d'avoir plus de détail que la seconde), je ne pourrai pas te dire si c'est standard / élégant / ingénieux / déconseillé ou quoi que ce soit d'autre. Du moment que tu as ce que tu cherches, et que ça fonctionne, fonce ! ;-)

 

Aïe aïe, attention quand même :

 

Note that the time can wrap around.  On a 32bit system where  

CLOCKS_PER_SEC equals 1000000 this function will return  the

same value approximately every 72 minutes.

Posté(e)

Ok, merci pour ton aide. Merci aussi pour la mise en garde, heureusement ça ne me concerne pas trop vu que j'utilise des temps très courts (ordre de grandeur de l'ordre du 1/10 de seconde). Bon, je fonce alors :P

Posté(e)

Et M............................e !!!!!!!!!!!!

En fait, je dois comparer 2 méthodes de hash coding, l'une utilisant des listes chainées, et l'autre le double hashing (calcul d'une clé pour accéder à une case mémoire), et le résultat était contraire à mes espérances, la méthode de listes chainées paraissant plus rapide en temps mesuré que l'autre (censée être plus rapide)...

Après avoir pas mal revu mon programme, je me demande si finalement le problème ne vient pas du fait que le temps mesuré est un temps CPU, et que le calcul d'indice est plus consommateur en CPU que le fait de parcourrir des listes chainées !!

Bref, retour à la case départ, dans le doute, à moins que vous me disiez que ce n'est pas ça le problème :P

Posté(e)

Oui, c'est ça, on peut appeler ça un benchmark (enfin ce sera pas 3dmark 2003, hein :P ). Enfin à l'origine, je m'attendais à des différences très marquées entre les différentes méthode de hashing et à un temps de travail supérieur, donc je voulais surtout un ordre de grandeur, mais là les différences sont très faibles sur un temps de l'ordre de 100 ms et le résultat inverse de celui attendu, alors je suis perplexe.

 

Sinon, je demande juste un avis : si un ordinateur parcourt une liste chainée pendant 5 minutes, puis le même ordinateur fait des calculs pendant 5 minutes (en oubliant les taches de fond - j'ai répété l'opération 30 fois), le temps CPU est le même pour le parcours et pour les calculs, normalement ?

Posté(e)

Tu as pensé à utiliser la commande "time" ?


kewlcat@localhost:~% time appli1

appli1  0.92s user 0.14s system 11% cpu 8.913 total



kewlcat@localhost:~% time appli2

appli2  0.01s user 0.00s system 44% cpu 0.022 total

Posté(e)

Non, je n'y avais pas pensé (en partie parce que je ne connaissais pas cette commande, en fait :-( ) mais, et j'ai oublié de le préciser, il faut que je mesure le temps mis par 2 parties différentes du programme, et cela pour plusieurs méthodes, pas le temps global d'execution du programme :P

Merci de ton aide, en tout cas, j'aurais du mieux préciser.

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...