time.perf_counter in Python 2?
Peter Otten
__peter__ at web.de
Mon Oct 20 04:09:32 EDT 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