Dokładny pomiar czasu działania procedury.

0

Chcę zmierzyć czas działania procedury, póki co robię tak:

	clock_t beg, end;
	beg = clock();
	procedura();
	end = clock();
	double dif = (end - beg)/double(CLOCKS_PER_SEC);
	cout << dif << endl;

Jednak ta metoda daje pomiar tylko do dwóch miejsc po przecinku [edit: do trzech], a chciałbym do pięciu. Czy w jakiś sposób da się dokładniej zmierzyć czas pomiędzy dwoma momentami w programie?. I nie chodzi mi tu o zapętlenie procedury 1000 razy i podzielenie wyniku przez 1000.

Korzystam z gcc pod Linuksem.

0

A jesteś pewien, że to nie wina tego, z jaka dokladnoscia wypisujesz zmienna dif ?

0

Nie, to nie to.

0

Jeżeli używasz Windowsa możesz skorzystać z funkcji QueryPeformanceFrequency i Counter, korzystających z zegara procesora.

0

QueryPerformance wiem, że dobrze działa, tylko właśnie nie korzystam z Windowsa :P (vide pierwszy post). Albo mówiąc ściślej: zależy mi na przenośności programu.

0
grzegorz314 napisał(a)

QueryPerformance wiem, że dobrze działa, tylko właśnie nie korzystam z Windowsa :P (vide pierwszy post). Albo mówiąc ściślej: zależy mi na przenośności programu.

może licznik taktów z pentium - rozkaz RDTSC, wynik w EDX:EAX - liczba taktów procesora od startu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1