42**1000000 is CPU time free

Chris Kaynor ckaynor at zindagigames.com
Fri Jul 24 23:08:56 CEST 2015


As you are doing an operation on a literal, Python is computing the value
at import time, which occurs before your time.clock() calls run.

Basically, what you really wrote in your code is:

import time
a = time.clock()
42000000000000000000000000000000000000000...0000000000 # Replace the ...
with zeros until you have the actual value.
b = time.clock()


The computation time is still being shown in the real and user times
reported by the external call. Similarly, if you were to put time.clock()
calls around the import statement, you would see the time there, for the
first import statement (Python caches imports, so they generally only run
once per instance).



The first example can measure the time as you are using a variable, which
bypasses Python's literal optimization.

Chris

On Fri, Jul 24, 2015 at 1:54 PM, candide <c.candide at laposte.net> wrote:

> Of course, computing 42**1000000 is not free:
>
>
> # ------------------
> import time
>
> a=time.clock()
>
> N=1000000
> 42**N
>
> b=time.clock()
>
> print("CPU TIME :", b - a)
> # ------------------
>
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> CPU TIME : 2.37
>
> real    0m2.412s
> user    0m2.388s
> sys     0m0.016s
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> So please, explain the following:
>
>
> # ------------------
> import time
>
> a=time.clock()
>
> 42**1000000
>
> b=time.clock()
>
> print("CPU TIME :", b - a)
> # ------------------
>
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> CPU TIME : 0.0
>
> real    0m2.410s
> user    0m2.400s
> sys     0m0.008s
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> (focus on the CPU TIME!!)
> --
> https://mail.python.org/mailman/listinfo/python-list
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20150724/840e9f70/attachment.html>


More information about the Python-list mailing list