C++: Zeit messen für bestimmte Anweisungsblöcke
-
Hi,
ich will mit C++ die Zeit für Bestimmte Anweisungsblöcke messen.
Angenommen man hat folgenden Code:// ForSchleife.cpp - Quadratzahlen berechnen
#include <iostream>
#include <conio.h>
using namespace std;int main()
{
int bis;
int loop;
int quadr;cout << "Quadratzahlen berechnen von 1 bis :" << endl;
cin >> bis;for(loop = 1; loop <= bis; ++loop)
{
// Beginn der Zeitmessung
quadr = loop * loop;
// Ende der Zeitmessung
cout << "Das Quadrat von " << loop << " ist: "
<< quadr << endl;
}getch();
return 0;
}Ich möchte also - wie man es den Kommentaren entnehmen kann - nur die benötigte Zeit für die Rechnung und die Speicherung in "quadr" wissen, nicht für den Rest.
thx für die Antworten...
-
Der zu messende Code ist imho zu kurz. Das dauert vielleicht 2 Prozessorzyklen (Multiplizieren+zuweisen). Die meiste Zeit wirst du für die Ausgabe verschwenden. Mach mal eine Schleife ohne Ausgabe und dann bis 40.000 und versuch davon die Zeit zu messen. Quasi so:
#include <windows.h> // nur, wenn du Windows hast, ist ja logisch //... unsigned int beginTime = ::GetTickCount(); for (unsigned int i = 1; i < 40000; ++i) unsigned int result = i * i; unsigned int endTime = ::GetTickCount(); std::cout << "Time in ms: " << endTime - beginTime << std::endl;Auf meinem Rechner reicht die Genauigkeit von ::GetTickCount()(ca. 16ms) nicht mal aus um die Zeit zu berechnen (Ergebnis 0ms ;)).
Gruß
Don06