All pastes #333407 Raw Edit

Stuff

public text v1 · immutable
#333407 ·published 2007-01-30 22:01 UTC
rendered paste body
Strict

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

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

Global ProfileTimer:TPerformanceTime = New TPerformanceTime
Tperformancetime.SetResolution(6) '6 digits
ProfileTimer.Start()

Delay 1001
del= ProfileTimer.Stop() ' should print 1 (or so)
Print del
End
Graphics 640,480,32,85

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

Type TPerformanceTime

	Global Frequency:Long
	Field StartTime:Long
	Field StopTime:Long
	
	Function SetResolution(Digits:Int)
		QueryPerformanceFrequency(Frequency)
		frequency=frequency/(10^digits)
	End Function

	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