high resolution timer
-
huhu
ich suche einen high resolution timer,ideal wäre es,wenn die auflösung des timers auch etwas genauer als millisekunden wäre, kennt jemand eine funktion die das bewerkstelligen kann?
-
Assembler x86: rdtsc
Windows: QueryPerformanceCounter
Linux: gettimeofday
-
Schau mal ob du damit etwas anfangen kannst:
class timer { public: // Konstruktoren timer (); // Methoden void start (); long double stop (); inline long double getlast () const; private: // Konstruktoren timer (const timer&); // Operatoren timer& operator = (const timer&); // Variablen LARGE_INTEGER m_Timer; long double m_Measurement; }; timer::timer () : m_Measurement(0) { m_Timer.QuadPart = 0; } void timer::start () { if(!QueryPerformanceCounter(&m_Timer)) throw; } long double timer::stop () { LARGE_INTEGER EndTime; if(!QueryPerformanceCounter(&EndTime)) throw; EndTime.QuadPart -= m_Timer.QuadPart; LARGE_INTEGER Frequency; QueryPerformanceFrequency(&Frequency); m_Measurement = EndTime.QuadPart / static_cast<long double>(Frequency.QuadPart); return(m_Measurement); } long double timer::getlast () const { return(m_Measurement); }
Ist wie gesagt aber kein Standard - in dem Fall ists eine Win-Variante. Die Klasse von Volkard ist zwar besser, aber ich finde sie grad wieder mal nicht
MfG SideWinder
-
thx
-
was für ne einheit ist m_Measurement? Millisekunden?
-
Nein Sekunden. Allerdings mit etlichen Kommastellen, was es dann wirklich ist kommt hauptsächlich auf den verwendeten Prozessor an.
MfG SideWinder