time.perf_counter in Python 2?

Peter Otten __peter__ at web.de
Mon Oct 20 10:09:32 CEST 2014


Florian Lindner wrote:

> Hello,
> 
> I wrote a script that does some time measurements. It uses
> time.perf_counter() from Python 3 which works very well. Now I need to
> backport it to python 2.
> 
> Docs say that time.clock() is way to go:
> 
> time.clock()
> On Unix, return the current processor time as a floating point number
> expressed in seconds. The precision, and in fact the very definition of
> the meaning of “processor time”, depends on that of the C function of the
> same name, but in any case, this is the function to use for benchmarking
> Python or timing algorithms.
> 
> On Windows, this function returns wall-clock seconds elapsed since the
> first call to this function, as a floating point number, based on the
> Win32 function QueryPerformanceCounter(). The resolution is typically
> better than one microsecond.
> 
> But for me it always returns the almost same number, nothing time like:
> 
> Python 2.7.3 (default, Feb 27 2014, 19:58:35)
> [GCC 4.6.3] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
>>>> import time
>>>> time.clock()
> 0.03
>>>> time.clock()
> 0.03
>>>> time.clock()
> 0.04
>>>> time.clock()
> 0.04
> 
> 
> What's wrong there?

While clock is not the recommended timer on Linux the granularity is still 
higher over here:

>>> time.clock()
0.06874
>>> time.clock()
0.069221
>>> time.clock()
0.069782
>>> time.clock()
0.070309

That or you can type faster ;)

Here's an excerpt from the 2.7 timeit.py:

if sys.platform == "win32":
    # On Windows, the best timer is time.clock()
    default_timer = time.clock
else:
    # On most other platforms the best timer is time.time()
    default_timer = time.time

In Python3.4 this has become

default_timer = time.perf_counter

So I'd go with timeit.default_timer().




More information about the Python-list mailing list