Christian Gollwitzer wrote: > Am 20.09.16 um 09:44 schrieb Peter Otten: >> Stefan Behnel wrote: >> >>> Peter Otten schrieb am 19.09.2016 um 14:55: >>>> In [7]: %%cython >>>> def omega(int n): >>>> cdef long i >>>> cdef long result = 0 >>>> for i in range(n): result += i >>>> return result >>>> ...: >>>> >>>> In [8]: %timeit omega(100000) >>>> 10000 loops, best of 3: 91.6 µs per loop >>> >>> Note that this is the worst benchmark ever. Any non-dump C compiler will >>> happily apply Young Gauß and calculate the result in constant time. >> >> Is that optimization useful in an actual program or just a way to cheat >> in benchmarks? > > Good question, but I think this falls under "strength reduction" which > is a useful optimization of tight loops in C. > > However, I'm not convinced it did succeed here. An evaluation of the > Gauß formula would run in a few *nanoseconds* on any moddern machine. It > may take a microsecond to call a functino from Python. a hundred > microseconds means that the loop does run.
A quick check indeed shows linear behaviour: In [1]: %load_ext cythonmagic In [2]: %%cython def sigma(int n): cdef long i cdef long result = 0 for i in range(n): result += i return result ...: In [3]: %timeit sigma(1000) 1000000 loops, best of 3: 1.04 µs per loop In [4]: %timeit sigma(10000) 100000 loops, best of 3: 9.25 µs per loop In [5]: %timeit sigma(100000) 10000 loops, best of 3: 91.3 µs per loop -- https://mail.python.org/mailman/listinfo/python-list