Arshpreet Singh wrote: > Hope this is good place to ask question about Cython as well. > Following code of mine is taking 2.5 times more time than Native Python > code: > > %%cython > import numpy as np > a = np.array([]) > def large_sum2(int num_range): > np.append(a,[i for i in xrange(num_range)]) > return a.sum > > %timeit large_sum2(100000) > 10 loops, best of 3: 19 ms per loop > > on the other side python takes much less time: > > def large_sum(num_range): > return sum([i for i in xrange(num_range)]) > > %timeit large_sum(100000) > 100 loops, best of 3: 7 ms per loop
But the two versions aren't the same! If you compare similar code: In [2]: %%cython def sigma(n): return sum(i for i in range(n)) ...: In [3]: def tau(n): return sum(i for i in range(n)) In [4]: %timeit sigma(100000) 100 loops, best of 3: 8.34 ms per loop In [5]: %timeit tau(100000) 100 loops, best of 3: 12.7 ms per loop And if you decide to go lowlevel (there may be smarter ways, but I'm a complete amateur with Cython): 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 In [9]: assert omega(100000) == tau(100000) == sigma(100000) -- https://mail.python.org/mailman/listinfo/python-list