On Dec 7, 2008, at 10:37 AM, Aaron DeVore wrote: > Out of curiosity, would most of the time be spent on the line "return > self.obj[self.i]"? It seems like a __getitem__ call would be much > slower than anything else in the class.
Yes, almost certainly. > > -Aaron > > On Sat, Dec 6, 2008 at 11:39 PM, Stefan Behnel > <[EMAIL PROTECTED]> wrote: >> Hi, >> >> Jelle Feringa wrote: >>> cdef class FastLoopObj1d: >>> >>> cdef int N, i >>> cdef object obj >>> >>> def __init__(self, n, obj ): >>> self.N = n-1 >>> self.i = 0 >>> self.obj = obj >>> >>> def __iter__(self): >>> return self >>> >>> # no cpdef allowed? >>> def __next__( self ): >>> if self.i < self.N: >>> self.i+=1 >>> return self.obj[self.i] >>> else: >>> raise StopIteration >>> >>> I noticed that the cython iterator is about twice as fast >>> compared to >>> the python version, when indexing an iterable object. >>> A respectable speedup, given how trivial the implementation is. >>> Would >>> you consider the implementation optimal? Is this the fastest way of >>> indexing an iterable object? >> >> This looks a bit like a stripped down version of itertools.islice >> () to me. >> Have you tried that instead? >> >> Stefan >> >> _______________________________________________ >> Cython-dev mailing list >> [email protected] >> http://codespeak.net/mailman/listinfo/cython-dev >> > _______________________________________________ > Cython-dev mailing list > [email protected] > http://codespeak.net/mailman/listinfo/cython-dev _______________________________________________ Cython-dev mailing list [email protected] http://codespeak.net/mailman/listinfo/cython-dev
