Code archives/Miscellaneous/Great Timers!!!!

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

Download source code

Great Timers!!!! by DH2003
Basicly, Create a timer "KCS_CreateTimer()", it will return its ID, then use the "KCS_GetTimer(ID)" to get the time it took between the two commands.. Very usefull when you dont know where all the lost time in your program is. Great for Debugging and optimising.

Uses Type Lists, very fast accessing.
;=========Timer Control Library (TCL)==========
;By Dark Half (masterprompt@kcstudios.net)
;
;
;Functions and Usages
;   KCS_CreateTimer()                          Creates a timer and returns its id
;   KCS_GetTimer(TimerID)                      Gets Time of Timer, and Deletes It
;   KCS_KillTimers()                           Timer Clean-up
;===============================================

;++++++++++Do Not Change Between Here++++++++++++++
Type TimerDB
     Field TimerID
     Field TimerTime
End Type

Function KCS_CreateTimer()
         local TempTimer.TimerDB
         TempTimer.TimerDB      = new TimerDB           ;Create A New Timer
         TempTimer\TimerID      = Handle(TempTimer)     ;Get Timer ID As Object
         TempTimer\TimerTime    = millisecs()           ;Get Current Time
         Return TempTimer\TimerID                       ;Return Timer ID For Refference
End Function

Function KCS_GetTimer(TimerID)
         local TempTimer.TimerDB, KCS_Time
         TempTimer = Object.TimerDB(TimerID)            ;Get Timer Object From ID
         KCS_Time  = Millisecs() - TempTimer\TimerTime  ;Get Timer Difference
         Delete TempTimer.TimerDB                       ;Delete The Timer
         Return KCS_Time                                ;Return The Timer Difference
End Function

Function KCS_KillTimers()
         local TempTimer.TimerDB
         For TempTimer.TimerDB     = Each TimerDB
                Delete TempTimer.TimerDB                ;Delete Each Timer
         Next
End Function
;+++++++++And Here, End DO NOT CHANGE++++++++++++++++

;====Example Code=================
             graphics3d 800,600,16,2
             setbuffer backbuffer()
             
             Camera = createcamera()
             Light = createlight()

             while not keydown(1)

                   RenderTimer = KCS_CreateTimer()              ;Assigns a timer to RenderTimer
                   Renderworld
                   RenderTimerCount = KCS_GetTimer(RenderTimer) ;Uses Rendertimer ID to return time to Rendertimer

                   TextTimer = KCS_CreateTimer()
                   Text 0,0,"Render Time:"+RenderTimerCount
                   text 0,10,"Text Time:"+TextTimerCount
                   text 0,20,"Flip Time:"+FlipTimerCount
                   TextTimerCount = KCS_GetTimer(TextTimer)

                   FlipTimer = KCS_CreateTimer()
                   Flip
                   FlipTimerCount = KCS_GetTimer(FlipTimer)

             Wend
             KCS_KillTimers()
End
;====End Example Code==============

Comments

None.

Code Archives Forum