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


Anmelden zum Antworten