Generators/iterators, Pythonicity, and primes

Duncan Booth duncan.booth at invalid.invalid
Sun Apr 12 23:04:21 CEST 2009

Duncan Booth <duncan.booth at invalid.invalid> wrote:

> John Posner <jjposner at> wrote:
>> Do know what in the itertools implementation causes adding a 'if p <=
>> sqrt(n)' clause to *decrease* performance, while adding a
>> 'takewhile()' clause *increases* performance? 
> I haven't timed it, but I would guess that the takewhile was faster 
> only because the sqrt(n) had been factored out of the loop. Try the 
> original loop again precalculating the sqrt(n) and see how that compares.
Which of course is rubbish, extracting the sdqrt will have an effect but 
the main factor is that takewhile exits the loop as soon as the condition 
is false whereas a conditional in a generator comprehension doesn't stop 
the loop continuing to the end.

More information about the Python-list mailing list