ermitteln der Ausführzeit eines Scriptes
-
Hallo,
Ich möchte gerne ermitteln, wie lange ein Datenbank Script für seine Ausführung benötigt.
Kann mir einer sagen wie der Quellcode in C aussieht?
Die Ausführzeit sollte wenn es geht in Millisekunden ausgegeben werden.Das wäre super wenn einer eine Lösung hätte.
Danke schon mal.
-
Such mal nach GetTickCount().
-
Also in PHP habe ich es folgendermaßen hinbekommen.
<? $startzeit = microtime(); // Script Code $endzeit = microtime() - $startzeit; echo 'Ausführzeit des Skriptes: '. round ($endzeit, 6) .' Sekunden'; ?>
Jetzt bräuchte ich "nur" noch den Code in C
Danke
-
Meinst Du sowas hier?
unsigned int beginTime = ::GetTickCount(); // Anweisung unsigned int endTime = ::GetTickCount(); std::cout << "Time in ms: " << endTime - beginTime << std::endl;
-
MN schrieb:
Meinst Du sowas hier?
unsigned int beginTime = ::GetTickCount(); // Anweisung unsigned int endTime = ::GetTickCount(); std::cout << "Time in ms: " << endTime - beginTime << std::endl;
Richtig! Sollte klappen.
EDIT: Nur, dass du es natürlich eher mit printf() ausgibst. Wir sind ja hier im C-Forum...
-
Ja ok alles klar.
Danke für Deine Hilfe.
-
_matze schrieb:
EDIT: Nur, dass du es natürlich eher mit printf() ausgibst. Wir sind ja hier im C-Forum...
und auch ohne diesen seltsamen doppelpunkt-operator
-
GetTickCount ist wWindows-spezifisch.
Allgemein für C nehme man clock
-
Also in C kann ich Sekunden messen:
#include <time.h> #include <stdio.h> int main() { time_t Start, Ende; int i=0; Start = time(0); for(i=0;i<2000000000;i++); {} Ende = time(0); printf("Die benötigte Zeit in s: %.0f", difftime(Ende,Start)); getch(); return 0; }
-
ist zwar kein c-standard, aber kann dennoch wie folgt umgesetzt werden und einer der genausten die ich kenne:
#include <windows.h> #include <time.h> LARGE_INTEGER time_start; LARGE_INTEGER time_stop; LARGE_INTEGER frequency; double elapsed_time = 0; QueryPerformanceCounter (&time_start); /** mach irgendwas **/ QueryPerformanceCounter(&time_stop); QueryPerformanceFrequency(&frequency); elapsed_time = ( (double) (time_stop.QuadPart - time_start.QuadPart) ) / frequency.QuadPart; /** Millisec umrechnen **/ elapsed_time *= 1000;
Ausgabe z.b: 34.234 ms
-
In C kann man das mit der Funktion clock aus time.h machen:
#include <time.h> int main() { int i = 0; clock_t start, stop; double ms = 0.0; start = clock(); while( i < 4E6 ){i++;} stop = clock(); ms = (double)(stop - start) / CLOCKS_PER_SEC * 1000; printf("von 0 auf %d in %.0f Millisekunden\n", i, ms ); return 0; }
-
Danke für Eure Antworten.
Die Letzten beiden sind genau das Richtige was ich gesucht habe. Das Ergebnis sollte schon sehr genau sein.