On Oct 23, 2019, at 22:45, Greg Ewing <greg.ew...@canterbury.ac.nz> wrote:
> 
> Andrew Barnert via Python-ideas wrote:
>> Someone earlier in this thread said we could optimize calling split on a
>> string literal, just as we can and do optimize iterating over a list literal
>> in a for statement.
>> The counter argument—which I thought you were adding onto—is that this would
>> be bad because it would make people write bad code for older/alternative
>> Pythons.
> 
> There's a precedent for this kind of thing -- there's an optimisation
> for repeatedly concatenating onto a string in some circumstances, even
> though building a list and joining it is recommended if you want
> guaranteed good performance. So the fact that it wouldn't apply to all
> versions and implementations of Python shouldn't really matter.
> 
> I'm not sure how much it would really help, though. Lists being
> mutable, it would have to build a new list every time,

Sure, but a small number of LOAD_CONSTs and a BUILD_LIST has to be faster than 
1 LOAD_CONST and a call to the split method.

From testing some different random examples, the split takes anywhere from 1.8x 
to 3.9x as long, and I assume with longer element strings it would be even more 
of a difference.

I still doubt this ever occurs anywhere near a bottleneck in real-life code—but 
if it did, it seems like the optimization would be worth it. (Assuming a better 
micro-benchmark verifies my quick&dirty test.)

_______________________________________________
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/4NAWS4DQDI6OLJL3LZXRMQ3AG52G47ZR/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to