// Ex1121.cc ... #include <time.h> // contains clock() int main() { ... double time1=0.0, tstart; // time measurment variables // read data ... tstart = clock(); // start // some code ... time1 += clock() - tstart; // end ... time1 = time1/CLOCKS_PER_SEC; // rescale to seconds cout << " time = " << time1 << " sec." << endl; return 0; } |
Es können beliebig viele Zeitmessungen im Programm erfolgen (irgendwann verlangsamen diese aber ihrerseits das Programm!). Jede dieser Zeitmessungen benötigt einen Start und ein Ende, allerdings können die Zeiten verschiedener Messungen akkumuliert werden (durch einfaches addieren).
Im File Ex1121.cc (siehe Ex1121.cc)
wird der Funktionswert eines Polynoms vom Grade 20
an der Stelle x d.h.,
s = ak . xk, berechnet.
Die 21 Koeffizienten ak und der Wert x werden im File
input.1121 bereitgestellt.
Der Funktionswert wird auf zwei,
mathematisch identische, Weisen im Programm berechnet.
Variante 1 benutzt die Funktion
pow
, während
Variante 2 den Wert von xk durch fortwährende Multiplikation
berechnet.
Das unterschiedliche Laufzeitverhalten (Ursache !?)
kann nunmehr durch
Zeitmessung belegt werden und durch fortschreitende Aktivierung
von Compileroptionen zur Programmoptimierung verbessert werden, z.B.
LINUX> g++ Ex1121.cc
LINUX> g++ -O Ex1121.cc
LINUX> g++ -O3 Ex1121.cc
LINUX> g++ -O3 -ffast-math Ex1121.cc
Der Programmstart erfolgt jeweils mittels
LINUX> a.out < input.1121