Fatest standard way to sum bytes (and their squares)?

Peter Otten __peter__ at web.de
Sun Aug 12 06:18:39 EDT 2007


Peter Otten wrote:

> lookup  = [i**2 for i in range(256)]
> 
>> def summit_str(data=data):
>>     return sum(ord(x) for x in data), sum(ord(x)**2 for x in data)
>> 
>> def summit_array(data=data, lookup=lookup):
>>     a = array.array("B")
>>     a.fromstring(data)
>>     return sum(a), sum(lookup[x] for x in a)

> $ python -m timeit -s'from summit import summit_array as summit'
> 'summit()' 100 loops, best of 3: 12.9 msec per loop

from itertools import imap

def summit_array(data=data, lookup=lookup):
    a = array.array("B")
    a.fromstring(data)
    return sum(a), sum(imap(lookup.__getitem__, a))

$ python -m timeit -s'from summit import summit_array as summit' 'summit()'
100 loops, best of 3: 9.15 msec per loop

I think I'll stop here...

Peter



More information about the Python-list mailing list