All pastes #333333 Raw Edit

Stuff

public text v1 · immutable
#333333 ·published 2007-01-30 21:20 UTC
rendered paste body
Strict

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

' ----------------------------------------------------------------------------------------------

Local Timer:TPerformanceTime = New TPerformanceTime
Timer.Start()
Delay 1000
Print Timer.Stop() ' should print 1 (or so)

Graphics 640,480,32,85
Repeat
	Cls
	DrawText(Timer.Time(),10,10)
	Flip
Until KeyDown(KEY_ESCAPE)

' ----------------------------------------------------------------------------------------------

Type TPerformanceTime

	Global Frequency:Long
	Field StartTime:Long
	Field StopTime:Long

	Method New()
		If Not Frequency Then QueryPerformanceFrequency(Frequency)
	EndMethod

	' returns the current system time
	Method Time:Double()
		Local Time:Long
		QueryPerformanceCounter(Time)
		Return Double(Time)/Frequency
	EndMethod

	' start the stopwatch
	Method Start()
		QueryPerformanceCounter(StartTime)
	EndMethod
	
	' will return the stopwatch result, can be called more than once!
	Method Stop:Double()
		QueryPerformanceCounter(StopTime)
		Return Double(StopTime-StartTime)/Frequency
	EndMethod

EndType