Ich möchte die Laufzeit eines Codeteiles ermitteln. Der Blick auf <ctime> bzw. <time.h> hat ergeben, dass man damit wohl nur Zeiten in Sekunden (aber keinen Bruchteilen davon) ermitteln kann. Bei Code, der vielleicht 1/1000 Sekunde läuft, hilft das verständlicherweise überhaupt nicht.
Gibt es eine Möglichkeit, eine Laufzeit in Takten oder so zu ermitteln?
Etwa so:
Code: Alles auswählen
cout << startzeit;
// Code, der getestet wird
cout << endzeit;
Die Frage kommt mir irgendwie blöd vor, weil sie wahrscheinlich schon hundertmal beantwortet wurde. Nur scheine ich nicht auf die richtigen Suchbegriffe zu kommen, denn die Ergebnisse aus dem Netz waren allesamt nicht hilfreich.
Vielen Dank vorweg
Gregor
Ergänzung: Die Frage hat sich erledigt. Ich bin auf diversen Code gestoßen, den ich auf die Schnelle zusammengefrickelt habe:
Code: Alles auswählen
// main.cc
#include "main.hh"
#include <iostream>
#include <cstdlib>
#include <sys/timeb.h>
#include <stdio.h>
using namespace std;
int getMilliCount(){
timeb tb;
ftime(&tb);
int nCount = tb.millitm + (tb.time & 0xfffff) * 1000;
return nCount;
}
int getMilliSpan(int nTimeStart){
int nSpan = getMilliCount() - nTimeStart;
if(nSpan < 0)
nSpan += 0x100000 * 1000;
return nSpan;
}
int main(){
cout << "Methode 1:\n" << endl;
printf("Starting timer...\n");
int start = getMilliCount();
// CODE YOU WANT TO TIME
for(int i = 0; i < 1000000; i++)
{
int a = 55/16;
a++;
}
int milliSecondsElapsed = getMilliSpan(start);
printf("Elapsed time = %u milliseconds\n\n", milliSecondsElapsed);
cout << "Methode 2:\n" << endl;
clock_t Start = clock();
for(int i = 0; i < 1000000; i++)
{
int a = 55/16;
a++;
}
cout << "Time Difference: " << clock() - Start << endl;
return 1;
}
// eof