How to Read Bytes from a file
Gabriel Genellina
gagsl-py2 at yahoo.com.ar
Mon Mar 5 20:59:33 EST 2007
En Fri, 02 Mar 2007 08:22:36 -0300, Bart Ogryczak <B.Ogryczak at gmail.com>
escribió:
> On Mar 1, 7:36 pm, "gregpin... at gmail.com" <gregpin... at gmail.com>
> wrote:
>> Thanks Bart. That's perfect. The other suggestion was to precompute
>> count1 for all possible bytes, I guess that's 0-256, right?
>
> 0-255 actually. It'd be worth it, if accessing dictionary with
> precomputed values would be significantly faster then calculating the
> lambda, which I doubt. I suspect it actually might be slower.
Dictionary access is highly optimized in Python. In fact, using a
precomputed dictionary is about 12 times faster:
py> import timeit
py> count1 = lambda x:
(x&1)+(x&2>0)+(x&4>0)+(x&8>0)+(x&16>0)+(x&32>0)+(x&64>0)+
(x&128>0)
py> d256 = dict((i, count1(i)) for i in range(256))
py> timeit.Timer("for x in range(256): w = d256[x]", "from __main__ import
d256"
).repeat(number=10000)
[0.54261253874445003, 0.54763468541393934, 0.54499943428564279]
py> timeit.Timer("for x in range(256): w = count1(x)", "from __main__
import cou
nt1").repeat(number=10000)
[6.1867963665773118, 6.1967124313285638, 6.1666287195719178]
--
Gabriel Genellina
More information about the Python-list
mailing list