====== Genaue Zeitmessung unter MacOS ======
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
#include
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: [[http://www.macresearch.org/tutorial_performance_and_time|MacResearch]]