getUTCtime() increases irregularly

Chris Nicholson-Sauls ibisbasenji at gmail.com
Sat Apr 7 21:03:59 PDT 2007


david wrote:
> Jarrett Billingsley schrieb:
>> "Manfred Nowak" <svv1999 at hotmail.com> wrote in message 
>> news:ev3jhs$28o4$1 at digitalmars.com...
>>> Jarrett Billingsley wrote
>>>
>>>> Unfortunately if David is looking to use this as a timestamp
>>> In the OP it says:
>>>
>>> | playing with a slow down class
>>>
>>> -manfred
>>
>> I... don't know what that is.
> 
> Sorry, here's a draft of the class.
> I'm sure there is a proper name for its funtionality,
> I just don't know it.
> 
> david
> 
> 
> import std.date : d_time, getUTCtime;
> 
> // todo: perhaps check in syncCycle if startCycle has been called before 
> at all (costs how much time?)
> /**
>  * prevents a program from running too fast by mapping code to time 
> intervals
>  * note: timer increments are only in quantities of ~15 or ~16 
> milliseconds,
>  * inbetween these intervals there is no increment $(BR)
>  * therefore, the timing can be off ~15 or ~16 milliseconds
>  */
> /** Example:
>  * Assures that after code A is finished at least 100 milliseconds have 
> passed before code C is executed
>  * ---
>  * Sync sync = new Sync;
>  * ... some code A ...
>  * sync.startCycle();
>  * ... some code B ...
>  * sync.syncCycle(100);
>  * ... some code C ...
>  * ---
>  */
> class Sync
> {
>     d_time startTime;
>     d_time passedTime;
> 
>     /// set the current time as the reference point
>     void startCycle()
>     {
>         startTime = getUTCtime();
>     }
>     
>     /** wait until msecs milliseconds have passed
>      *  since startCycle() has been called last $(BR)
>      *  if msecs or more milliseconds have passed already, return 
> immediately
>      */
>     void syncCycle(d_time msecs)
>     {
>         passedTime = getUTCtime() - startTime;
>         while (passedTime < msecs)        // todo: replace passedTime by 
> expression "getUTC... - startT..."
>             passedTime = getUTCtime() - startTime;
>     }
> }

Aka, you want it to lock the application to a certain "frame rate", aye?  I'm really not 
sure what the technical term is either, so I usually just state the obvious descriptor: 
"frame rate lock".  ;P  In this case, perfect precision may not be neccessary anyhow... 
but I guess that all depends on what you are implementing with it.

-- Chris Nicholson-Sauls


More information about the Digitalmars-d-learn mailing list