Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 28/11/2007, à 19:42

spinoza

Problèmes avec la fonction clock() de time.h

Bonsoir à  tous,
Voilà  plus ça va et plus je fait de choses sous ubuntu, en ce moment c'est la programmation.
Je veux calculer le temps nécessaire à  l'exécution d'une boucle je me sert cdonc du code suivant:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
clock_t start , end;

start = clock();
{
boucle de programme;
}
end = clock();

printf ("%lf", 1.0*(end-start)/CLOCKS_PER_SEC);

return 0 ;
}

Le seul problèpme c'est que la valeur retournée est 0.0000000 sad
Quelqu'un voit-il d'ou vient le problème ?
Merci d'avance,

$p!n0z@

Hors ligne

#2 Le 28/11/2007, à 20:57

robrob

Re : Problèmes avec la fonction clock() de time.h

A mon avis c'est parceque 1.0*(end-start)/CLOCKS_PER_SEC est calculé sur des entiers avec d'être converti en float.

Essaye avec :
printf ("%lf", (float)(end-start)/CLOCKS_PER_SEC);

Dernière modification par robrob (Le 28/11/2007, à 20:57)

Hors ligne

#3 Le 28/11/2007, à 21:04

spinoza

Re : Problèmes avec la fonction clock() de time.h

Merci de ta réponse,
Malheureusement cela ne change rien, d'autre part, le fait de multiplier par 1.0 n'est-il pas censé le convertir en float ???
Avec un cast en double, même résultat.
Ce qui m'étonne aussi c'est que sous Windows cela fonctionne.
D'autres idées ?
Je commence à  désespérer ...:/

Hors ligne

#4 Le 28/11/2007, à 23:09

robrob

Re : Problèmes avec la fonction clock() de time.h

Peut-être que ta boucle est trop rapide vis à  vis de la résolution de la mesure.
Essaye de lancer 100 fois la boucle et de mesurer le temps total.

Hors ligne

#5 Le 28/11/2007, à 23:29

spinoza

Re : Problèmes avec la fonction clock() de time.h

C'est ce que je me suis dit.
J'ai donc appelé les valeurs du premier clock() ainsi que le deuxième et j'ai même incorporé un scanf et un sleep mais toujours rien.
En fait la questions que je me pose est que renvoi exactement le clock() ?
j'ai lu sur les net qu'il s'agissait d'un temps de calcul CPU donc je ne pesne pas que le sleep ou le scanf intervienne ???
Et pourquoi sous windows ces deux instruction me rendent un résultat ???
Je crois que je n'ai pas fini de chercher ...:rolleyes:

EDIT :
Je viens de faire un test, effectivement en répétant un très GRAND nombre de fois ma boucle j'obtient un résultat.
Mais alors pourquoi le sleep et le scanf ne faisaient rien sous ubuntu alors que sous windows ils augmentaient le temps ???

Dernière modification par spinoza (Le 28/11/2007, à 23:44)

Hors ligne