Hi, here's a little generator benchmark:
====================== def cgen(a,b): while 1: yield a+b d = {} exec ''' def pygen(a,b): while 1: yield a+b ''' in d pygen = d['pygen'] def repeat_gen(gen, int count): cdef int i for i in range(count): next(gen) try: gen.throw(GeneratorExit) except GeneratorExit: pass ====================== timeit gives me this in Py3.2: $ python3 -m timeit -s 'from genbench import repeat_gen, cgen, pygen' 'repeat_gen(pygen(1,2), 10000)' 1000 loops, best of 3: 827 usec per loop $ python3 -m timeit -s 'from genbench import repeat_gen, cgen, pygen' 'repeat_gen(cgen(1,2), 10000)' 1000 loops, best of 3: 271 usec per loop And here's another one where we add Cython's looping advantage: ====================== def cgen(a,b): cdef int i for i in range(a): yield b d = {} exec ''' def pygen(a,b): for i in range(a): yield b ''' in d pygen = d['pygen'] def repeat_gen(gen): for _ in gen: pass ====================== $ python3 -m timeit -s 'from genbench import repeat_gen, cgen, pygen' 'repeat_gen(pygen(10000, 2))' 1000 loops, best of 3: 881 usec per loop $ python3 -m timeit -s 'from genbench import repeat_gen, cgen, pygen' 'repeat_gen(cgen(10000, 2))' 10000 loops, best of 3: 116 usec per loop That's not too bad for a start. Stefan _______________________________________________ Cython-dev mailing list Cython-dev@codespeak.net http://codespeak.net/mailman/listinfo/cython-dev