[Python-3000] Two proposals for a new list-like type: one modest, one radical
Daniel Stutzbach
daniel at stutzbachenterprises.com
Tue Apr 24 02:37:12 CEST 2007
On 4/23/07, Adam Olsen <rhamph at gmail.com> wrote:
> The usage patterns can make a big difference there though. A list's
> worst-case is only reached if you have a spike, then drop to just
> above half-full. A BList's worst-case is reached through random
> slicing.
>
> Daniel, does repeated getitem/setitem (as in random.shuffle())
> increase memory usage, or does it have no effect?
getitem and setitem have no effect on the BList's internal structure
(and thus no effect on memory usage). Only operations that add or
remove elements do.
> A random.shuffle() benchmark might be a better a better demonstration
> of the overall costs.
Here you go: http://stutzbachenterprises.com/fig/shuffle.html
The regular list's has an advantage due to the special casing of x[k]
within the Python bytecode interpreter. After that, the O(log n) cost
of BList's item is visible in the right-hand graph via the step at
n=128. The next step would be at n=16384.
--
Daniel Stutzbach, Ph.D. President, Stutzbach Enterprises LLC
More information about the Python-3000
mailing list