Strange result with timeit execution time measurment

ast nomail at invalid.com
Sat Nov 15 18:07:30 CET 2014


Hi

I needed a function f(x) which looks like sinus(2pi.x) but faster.
I wrote this one:

--------------------------
from math import floor

def sinusLite(x):
    x = x - floor(x)
    return -16*(x-0.25)**2 + 1 if x < 0.5 else 16*(x-0.75)**2 - 1
--------------------------

then i used module timeit to compare its execution time with math.sin()
I put the sinusLite() function in a module named test.

then:

>>> import timeit
>>> t1 = timeit.Timer("y=test.sinusLite(0.7)", "import test")
>>> t2 = timeit.Timer("y=math.sin(4.39)", "import math")        ## 4.39 = 2*pi*0.7

>>>  t1.repeat(3, 1000000)
[1.9994622221539373, 1.9020670224846867, 1.9191573230675942]

>>> t2.repeat(3, 1000000)
[0.2913627989031511, 0.2755561810230347, 0.2755186762562971]

so the genuine sinus is much faster than my so simple sinLite() !
Amazing isnt it ? Do you have an explanation ?

Thx



More information about the Python-list mailing list