Speedup for getting collection indices, avoid getting the collection length unless a negative index is given. This avoids a loop over the entire collection in many cases. Speedup for getting collection slices by detecting collection[:] and internally calling collection.values(), this gives a big speedup with some collections because each slice item would loop over the list until that index was found. Rough test with 336 objects. - getting index of listbase collection ~ 5.0x faster - getting index of array collection ~ 1.15x faster - getting slices of listbase collections ~ 34.0x faster - getting slices of array collections ~ 1.5x faster