sum() vs. loop
Christian Gollwitzer
auriocus at gmx.de
Tue Oct 12 14:52:21 EDT 2021
Am 12.10.21 um 05:41 schrieb Dan Stromberg:
> On Mon, Oct 11, 2021 at 2:54 PM Steve Keller <keller.steve at 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
> It seems like the generator expression should be the fastest to me. But
> writing for speed instead of writing for clarity is usually not a great
> idea.
>
Maybe, unless this was just a test, it can be fastest AND clearest with
numpy.dot(seq1, seq2)
- in case that the sequence consists of floats and, in the best case, is
already stored in a numpy array. Then you cannot beat this with Python
code.
Christian
More information about the Python-list
mailing list