Ammar Askar added the comment:

> We really don't want to encourage any reliance on this optimization.  It was 
> put there only to help mitigate the performance impact of a common mistake.

Aah, I didn't realize the extra context behind why the unicode_concatenate path 
actually exists in ceval. Makes sense though since it was the only exceptional 
case that popped out in ceval.

> It would be interesting to see an example showing the benefit of this change

I'm no expert at benchmarking but I threw together a quick script to compare 
the different ways of string concatenation and it seems like an INPLACE_ADD is 
the fastest. (which makes sense because it avoids the overhead of having a list 
object that ''.join brings in, not sure why StringIO is slower than both 
though, maybe that would be a better place to improve?)

Either way if you guys think this adds too much complexity on top of an 
existing hack, this is fine to close.


Benchmarking results:

  INPLACE_ADD short ascii
0.4307783489348367
  ''.join     short ascii
0.6934443039353937
  StringIO    short ascii
0.9447220619767904

  INPLACE_ADD short unicode
0.4411839219974354
  ''.join     short unicode
0.666951927007176
  StringIO    short unicode
0.9783720930572599

  INPLACE_ADD long ascii
3.6157665309729055
  ''.join     long ascii
6.938268916099332
  StringIO    long ascii
5.279585674987175

  INPLACE_ADD long unicode
3.7768358619650826
  ''.join     long unicode
4.641092017991468
  StringIO    long unicode
7.6051657549105585

----------
Added file: http://bugs.python.org/file43644/bench.py

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

Reply via email to