• # Posix time API ?

    Posté par . En réponse au message Mesurer le temps d'exécution d'un fragment de code. Évalué à 3.

    Pour la mesure de temps de précision, tu as:
    * clock_gettime qui renvoit une structure timespec avec une granularité à la nanoseconde.
    * times qui te permet de mesurer plus finement le temps cpu occupé par ton processus et les processus fils (système et utilisateur). Le seul bémol, c'est que c'est en nombre de tics d'horloges, donc il faudra récupérer le nombre de tics/seconde avec un appel sysconf(_SC_CLK_TCK)

    Ce sera plus clair avec un exemple simplifié:
    double clockticks, cticks;
    clock_t tcstart, tcend;
    struct tms tmstar, tmendt;

    clockticks = (double) sysconf(_SC_CLK_TCK);
    printf("Nombre de tics d'horloge par seconde: %f\n", clockticks);

    tcstart = times(&tmstart)
    ma_fonction_a_mesurer();
    tcend = times(&tmend)

    cticks = tmend.tms_utime + tmend.tms_stime - tmstart.tms_utime - tmstart.tms_stime;
    printf("Temps CPU utile %f secondes\n", tcicks/clockticks);

    Tu peux même calculer la fraction de temps CPU utilisé par ton programme: cticks/(tcend -tcstart)


    Personnellement, j'utiliserais plutôt un outil de profilage (gprof) comme on te l'a conseillé ailleurs, si c'est pour améliorer les performances de ton soft.