Die exakte Zeitmessung mit MacOS wird mit der Funktion mach_absolute_time() durchgeführt. Diese Funktion findet sich im Darwinkernel in den Includes in der Datei mach/mach_time.h. Um eine klare Aussage zu treffen, wieviel Zeit genau vergangen ist, hilft die Funktion AbsoluteToNanoseconds() in den CoreServices des MacOS.
#include <mach/mach_time.h> #include <CoreServices/CoreServices.h>
Mit folgender Funktion lässt sich die aktuelle Zeit als 64 Bit Integer darstellen:
uint64_t timeAsNanoseconds(void) { uint64_t t = mach_absolute_time(); return *(uint64_t *) &AbsoluteToNanoseconds(* (AbsoluteTime*) &t); }
Nun können wir die Zeit messen, die ein Vorgang benötigt:
uint64_t begin, end; begin = timeAsNanoseconds(); /* Programmabschnitt, dessen Zeit gemessen werden soll */ end = timeAsNanoSeconds();
Die benötigte Zeit lässt sich nun wie folgt in Nanosekunden berechnen:
uint64_t elapsed = end - begin;
Um diesen Quelltext zu kompilieren muss das CoreServices-Framework an dem Compiler übergeben werden, zum Beispiel:
gcc test.c -framework CoreServices
 
siehe auch: MacResearch