On Tue, Oct 12, 2021 at 8:55 AM Steve Keller <keller.st...@gmx.de> wrote:
>
> I have found the sum() function to be much slower than to loop over the
> operands myself:
>
> def sum_products(seq1, seq2):
>     return sum([a * b for a, b in zip(seq1, seq2)])
>
> def sum_products2(seq1, seq2):
>     sum = 0
>     for a, b in zip(seq1, seq2):
>         sum += a * b
>     return sum
>
> In a program I generate about 14 million pairs of sequences of ints each
> of length 15 which need to be summed.  The first version with sum() needs
> 44 seconds while the second version runs in 37 seconds.
>
> Can someone explain this difference?
>

When you use sum, you're constructing a list. Try removing the square brackets:

return sum(a * b for a, b in zip(seq1, seq2))

It's also possible that the genexp has more overhead than simply
iterating directly, but at very least, this will reduce the memory
consumption.

ChrisA
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to