How to measure elapsed time under Windows?

Grant Edwards invalid at invalid.invalid
Tue Feb 9 20:04:01 CET 2010


On 2010-02-09, Jean-Michel Pichavant <jeanmichel at sequans.com> wrote:
> Grant Edwards wrote:
>> What's the correct way to measure small periods of elapsed
>> time.  I've always used time.clock() in the past:
>>
>>    start = time.clock()
>>    [stuff being timed]
>>    stop  = time.clock()
>>
>>    delta = stop-start
>>
>> However on multi-processor machines that doesn't work.
>> Sometimes I get negative values for delta.  According to
>> google, this is due to a bug in Windows that causes the value
>> of time.clock() to be different depending on which core in a
>> multi-core CPU you happen to be on.   [insert appropriate
>> MS-bashing here]
>>
>> Is there another way to measure small periods of elapsed time
>> (say in the 1-10ms range)?
>>
>> Is there a way to lock the python process to a single core so
>> that time.clock() works right?
>>
>>   
>
> Did you try with the datetime module ?

No.  What mechanism does it use to get the current date/time?

> import datetime
> t0 = datetime.datetime.now()
> t1 = t0 - datetime.datetime.now()
> t1.microseconds
> Out[4]: 644114

That looks very broken to me.  I need to measure stuff in the
1-20ms range, and the smallest value you can measure using the
method above appears to be 640ms.  Thats almost 2/3 of a second.

-- 
Grant Edwards                   grante             Yow! If our behavior is
                                  at               strict, we do not need fun!
                               visi.com            



More information about the Python-list mailing list