> >Here are micro-benchmarks under 3.2: > > > $ ./python -m timeit -s "x = b'x'*10000" "x[:100]" > > 10000000 loops, best of 3: 0.134 usec per loop > > $ ./python -m timeit -s "x = memoryview(b'x'*10000)" "x[:100]" > > 10000000 loops, best of 3: 0.151 usec per loop > > That's weird. The greedy slice needs two memory allocations. One for > the ByteArray object itself, one for its cargo. In total, more that > 100 bytes. In contrast, creating the MemoryView object requires only > one allocation of a few dozen bytes.
It's not a bytearray object, it's a bytes object. It requires only a single allocation since the data is allocated inline. The memoryview object must also call getbuffer() again on the original object. Regards Antoine. _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com