Stefan Behnel added the comment:

Here is another patch that remembers the Py_ssize_t slice indices if they are 
known at instantiation time. It only makes a very small difference for the 
"fannkuch" benchmark, so that's no reason to add both the complexity and the 
(IMHO ignorable) memory overhead.

However, it also adds a public C-API function PySlice_FromIndices() that allows 
setting the values from C code at instantiation time, thus avoiding the 
overhead of having to do the conversion back again.

It might also be worth exploring if we can't instantiate the Python object 
indices at first request using properties, iff the slice was created with 
integer indices. Meaning, we'd leave the PyObject* fields NULL in that case 
until they are being used. That would reduce the overhead of creating the slice 
object in the first place. Since we added the one-instance cache, it's now 
dominated by the creation of the index value objects when 
_PySlice_FromIndices() is being used internally (e.g. when calling 
PySequence_Get/Set/DelSlice()).

----------
Added file: http://bugs.python.org/file31431/cache_slice_indices.patch

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue18813>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to