42**1000000 is CPU time free

Zachary Ware zachary.ware+pylist at gmail.com
Fri Jul 24 23:09:36 CEST 2015


On Fri, Jul 24, 2015 at 3:54 PM, candide <c.candide at laposte.net> wrote:
> Of course, computing 42**1000000 is not free:
> So please, explain the following:
>
> (focus on the CPU TIME!!)

In your second example, the peephole optimizer gets hold of it and
does the calculation at compile time:

 Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 23 2015, 02:52:03)
 [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
 Type "help", "copyright", "credits" or "license" for more information.
 >>> from dis import dis
 >>> def with_var(): N = 100; return 42**N
 ...
 >>> def no_var(): return 42**100
 ...
 >>> dis(with_var)
  1           0 LOAD_CONST               1 (100)
              3 STORE_FAST               0 (N)
              6 LOAD_CONST               2 (42)
              9 LOAD_FAST                0 (N)
             12 BINARY_POWER
             13 RETURN_VALUE
 >>> dis(no_var)
  1           0 LOAD_CONST               3
(2113143741011360736530044045523113991698878330713580061264477934391564919875497777688215057732151811172029315247932158994879668553186145824710950394684126712037376)
              3 RETURN_VALUE
 >>>


-- 
Zach


More information about the Python-list mailing list