On Thu, Oct 14, 2021 at 11:15:52PM +1100, Chris Angelico wrote:
> On Thu, Oct 14, 2021 at 11:03 PM Jeremiah Vivian
> <nohackingofkrow...@gmail.com> wrote:
> >
> > Results are in (tested 
> > `next(iter(d))`/`next(iter(d.values())`/`next(iter(d.items())` and their 
> > `next(reverse())` counterparts):
> > `*` / `/` implemented is 2x faster than `next(iter(d))`/`next(reversed(d))`
> > `+` / `-` implemented is approximately 3x faster than 
> > `next(iter(d.values()))`/`next(reversed(d.values()))`
> > `<<` / `>>` implemented is at least 4x faster than 
> > `next(iter(d.items()))`/`next(reversed(d.items()))`
> >
> 
> So, negligible benefits. Thanks for checking.

Be fair Chris :-)

A 2x or 4x speed-up (even of a micro-benchmark) is not negligible. If 
someone managed a mere 20% or 30% speedup to next(), we would probably 
be more than happy to take it.

A better way to put this is that while the speed benefit to one uncommon 
task is non-negligible, the cost to readability and comprehensibility is 
horrendous. This is premature optimization: there's no evidence that 
getting the first element of a dict is a common operation, let alone a 
bottleneck that needs optimising.

Ultimately, for every millisecond in program runtime saved by using 
obscure operators for uncommon operations on dicts, we would probably 
cost a dozen programmers five or ten minutes in confusion while they try 
to decipher what on earth `mydict << 1` means.

There are programming languages designed to be terse and even 
deliberately obfuscated, especially code-golfing languages. I'm glad 
Python is not one of them :-)


-- 
Steve
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/VATEHX2NA5K5SV2PVK7OTCGFK3LSNONQ/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to