fonctions utiles pour écrire les .csv
et mesurer le temps
More...
#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
#include <sys/times.h>
#include <time.h>
#include <unistd.h>
#include "benchmark.h"
Classes | |
struct | timer |
timer permet de mesurer le temps écoulé entre deux moments More... | |
struct | recorder |
recorder écrit les temps dans un fichier .csv More... | |
Macros | |
#define | BILLION 1000000000 |
#define | GETTIME_TO_NSEC(time_gettime) (((long) time_gettime.tv_sec) * BILLION + time_gettime.tv_nsec) |
#define | CLOCK_TO_NSEC(time_clock) ((((long) time_clock) * BILLION) / CLOCKS_PER_SEC) |
#define | TIMES_TO_NSEC(time_times) ((((long) time_times.tms_utime + time_times.tms_stime) * BILLION) / t->clock_ticks) |
#define | GTOD_TO_NSEC(time_gtod) (((long) time_gtod.tv_sec) * BILLION + time_gtod.tv_usec * 1000) |
Functions | |
timer * | timer_alloc () |
Alloue un timer More... | |
void | start_timer (timer *t) |
Stoque le temps actuel comme début de la mesure dans t More... | |
long int | stop_timer (timer *t) |
Retourne le temps en nanosecondes depuis le début de mesure dans t More... | |
void | timer_free (timer *t) |
Retourne le temps en nanosecondes depuis le début de mesure dans t More... | |
void | update_overhead () |
Mets à jours l'overhead More... | |
long int | get_overhead () |
recorder * | recorder_alloc (char *filename) |
Alloue un recorder More... | |
void | write_record (recorder *rec, long int x, long int time) |
Écris le temps time en correspondance avec x More... | |
void | write_record_n (recorder *rec, long int x, long int time, long n) |
Comme write_record mais divise time par n après avoir retiré l'overhead More... | |
void | recorder_free (recorder *rec) |
Libère toutes les resources utilisées par rec More... | |
Variables | |
volatile long int | overhead = -1 |
Temps nécessaire pour effectuer start_timer et stop_timer sans rien faire entre. More... | |
fonctions utiles pour écrire les .csv
et mesurer le temps
Cette libraire contient timer
pour mesurer le temps et recorder
pour écrire les temps dans un fichier au format .csv
qu'on peut plotter facilement avec gnuplot
.
#define BILLION 1000000000 |
#define CLOCK_TO_NSEC | ( | time_clock | ) | ((((long) time_clock) * BILLION) / CLOCKS_PER_SEC) |
#define GETTIME_TO_NSEC | ( | time_gettime | ) | (((long) time_gettime.tv_sec) * BILLION + time_gettime.tv_nsec) |
#define GTOD_TO_NSEC | ( | time_gtod | ) | (((long) time_gtod.tv_sec) * BILLION + time_gtod.tv_usec * 1000) |
#define TIMES_TO_NSEC | ( | time_times | ) | ((((long) time_times.tms_utime + time_times.tms_stime) * BILLION) / t->clock_ticks) |
long int get_overhead | ( | ) |
recorder* recorder_alloc | ( | char * | filename | ) |
Alloue un recorder
Les données seront écrites dans le fichier filename
. En cas d'erreur, il exit
avec EXIT_FAILURE
.
void recorder_free | ( | recorder * | rec | ) |
Libère toutes les resources utilisées par rec
rec | le recorder auquel il faut libérer les resources |
void start_timer | ( | timer * | t | ) |
Stoque le temps actuel comme début de la mesure dans t
t | Le temps dans lequel on stoque le temps de début |
En cas d'erreur, affiche un message sur stderr
et exit
long int stop_timer | ( | timer * | t | ) |
Retourne le temps en nanosecondes depuis le début de mesure dans t
t | Le temps dans lequel on a stoqué le temps de début |
En cas d'erreur, affiche un message sur stderr
et exit
timer* timer_alloc | ( | ) |
Alloue un timer
En cas de succès, retourne un timer
, en cas d'erreur, affiche un message sur stderr
et exit
void timer_free | ( | timer * | t | ) |
void update_overhead | ( | ) |
Mets à jours l'overhead
void write_record | ( | recorder * | rec, |
long int | x, | ||
long int | time | ||
) |
Écris le temps time
en correspondance avec x
L'overhead
est d'abord retiré de time
En cas d'erreur, il exit
avec EXIT_FAILURE
rec | le recorder dans lequel écrire, il est supposé non-NULL |
x | l'abscisse |
time | le temps à écrire en ordonnée |
void write_record_n | ( | recorder * | rec, |
long int | x, | ||
long int | time, | ||
long | n | ||
) |
Comme write_record
mais divise time
par n
après avoir retiré l'overhead
volatile long int overhead = -1 |
Temps nécessaire pour effectuer start_timer
et stop_timer
sans rien faire entre.