[Python-ideas] Exploiting type-homogeneity in list.sort() (again!)

MRAB python at mrabarnett.plus.com
Sun Mar 5 23:11:07 EST 2017


On 2017-03-06 03:09, Chris Angelico wrote:
> On Mon, Mar 6, 2017 at 2:03 PM, Elliot Gorokhovsky
> <elliot.gorokhovsky at gmail.com> wrote:
>> On Sun, Mar 5, 2017 at 7:50 PM Chris Angelico <rosuav at gmail.com> wrote:
>>>
>>>
>>> I would be rather curious to know how frequently a list consists of
>>> "numbers", but a mix of ints and floats. Does it happen a
>>> lot in real-world code?
>>>
>>
>> This is of course undecidable to verify statically, so we can't just crawl
>> PyPI... however, I would argue that using mixed float-int lists is
>> dangerous, and is more dangerous in Python 3 than in Python 2. So hopefully
>> this is not very common. However, even if 10% (surely a vast overestimate)
>> of sort calls are to mixed int-float lists, my patch would still yield a
>> significant savings on average.
>
> I agree that it's dangerous, but it is still common for programmers
> and Python alike to treat 10 as functionally identical to 10.0 -
> although as to being more dangerous in Py3, that's much of a muchness
> (for instance, the single-slash division operator in Py2 can
> potentially truncate, but in Py3 it's always going to give you a
> float). But, fair point. I very much doubt it's as high as 10%, so
> yeah, that would be advantageous.
>
> Also, the performance hit is so small, and even that is in the very
> worst case (a homogeneous list with one different type at the end). I
> like changes that make stuff run faster.
>
Although it's true that both programmers and Python might treat 10 as 
functionally identical to 10.0, in practice the numbers that are being 
added to the list probably come from some code that returns integers 
/or/ floats, rather than a mixture.



More information about the Python-ideas mailing list