E’ possibile utilizzare questo codice per effettuare il benchmarking di una funzione. Misuriamo la durata in unità di tempo e ne restituiamo anche i secondi con precisione float.
E’ previsto il passaggio del nome della funzione in formato stringa (per scrittura a video successiva) e l’indirizzo della funzione da chiamare. All’interno di questa funzione è possibile utilizzare callback apportando gli opportuni aggiustamenti.
int
benchmark(char *strFunction,
void (*func)())
{
clock_t start, finish; /* clock_t e' il tipo >aritmetico<
* restituito da clock() */
long units;
start = clock();
func(); /* Qui passiamo la nostra funzione con i
* relativi parametri, se richiesti */
finish = clock();
units = finish - start;
/* Scriviamo i risultati
* NOTA: strFunction e' solo il nome della
* funzione in formato stringa */
printf("%s took %ld time units (%f seconds)\n", strFunction, units,
(double)units / (double)CLOCKS_PER_SEC);
return 0;
}