Home
Products
Community
Manuals
Contact
Login or Signup

Code archives/Miscellaneous/High Resolution Timers

This code has been declared by its author to be Public Domain code.

Download source code

High Resolution Timers by Damien Sturdy(Posted 1+ years ago)
Example of useage included :)
SuperStrict


'Demo:

Global Counter:TPerfCounter=TperfCounter.Create(1000000) 'Create a Counter.
'My PC can handle 1000,000,000 BUT I have been warned it's prob not accurate :)

counter.Start()	'Start the counter.
Global MS:Int=MilliSecs()
Repeat
	Print Counter.Stop()+"  "+(MilliSecs()-ms)/1000	'test counter by checking it next to millisecs.
Until (MilliSecs()-ms)>10000 'do it for 10 secs.

End	'  XD I wonder what this does...







'--------------------------------------- the real timer lib:

Extern "win32"
	Function QueryPerformanceFrequency(LARGE_INTEGER:Long Var)
	Function QueryPerformanceCounter(LARGE_INTEGER:Long Var)
EndExtern


Type TPerfCounter
	Field Frequency:Double
	Field basefrequency:Long
	Field Started:Long
	Field LastValue:Long
	Global perfTime:Long	'Global to the type so that a new Local variable doesnt get created
				'in every function/method. Slight speed increase.
							
							
	Function GetCounter:Long()				'Calls QueryPerformanceCounter directly.
		QueryPerformanceCounter(PerfTime)
		Return PerfTime
	End Function

	
	Function Create:TPerfCounter(Freq:Long)			'Creates a Performance Counter using the Frequency
		Local obj:TPerfCounter=New TPerfCounter
		obj.frequency=Freq
		QueryPerformanceFrequency(obj.baseFrequency)
		obj.Frequency=(obj.basefrequency/obj.Frequency)
		Return OBJ
	End Function

	Method GetTicks:Long()					'Get this counter's ticks (uses Frequency)
		QueryPerformanceCounter(PerfTime)
		Return perftime/frequency
	End Method

	Method Start()						'Start this counter. (Actually, just set its Started property....)
		QueryPerformanceCounter(PerfTime)
		Started=perfTime
	End Method
	
	Method Stop:Long()					'Stop the counter and return the amount of ticks.
		QueryPerformanceCounter(PerfTime)
		LastValue=Long((perftime-Started)/Frequency)
		Return LastValue
	End Method
End Type

Comments

None.

Code Archives Forum