Generators/iterators, Pythonicity, and primes
Duncan Booth
duncan.booth at invalid.invalid
Sun Apr 12 17:04:21 EDT 2009
Duncan Booth <duncan.booth at invalid.invalid> wrote:
> John Posner <jjposner at snet.net> 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