[Python-Dev] Usage of += on strings in loops in stdlib

Antoine Pitrou solipsis at pitrou.net
Wed Feb 13 08:24:22 CET 2013


On Wed, 13 Feb 2013 08:16:21 +0100
Antoine Pitrou <solipsis at pitrou.net> wrote:
> On Wed, 13 Feb 2013 09:39:23 +1000
> Nick Coghlan <ncoghlan at gmail.com> wrote:
> > On 13 Feb 2013 07:08, "Maciej Fijalkowski" <fijall at gmail.com> wrote:
> > >
> > > Hi
> > >
> > > We recently encountered a performance issue in stdlib for pypy. It
> > > turned out that someone commited a performance "fix" that uses += for
> > > strings instead of "".join() that was there before.
> > >
> > > Now this hurts pypy (we can mitigate it to some degree though) and
> > > possible Jython and IronPython too.
> > >
> > > How people feel about generally not having += on long strings in
> > > stdlib (since the refcount = 1 thing is a hack)?
> > >
> > > What about other performance improvements in stdlib that are
> > > problematic for pypy or others?
> > >
> > > Personally I would like cleaner code in stdlib vs speeding up CPython.
> > 
> > For the specific case of "Don't rely on the fragile refcounting hack in
> > CPython's string concatenation" I strongly agree. However, as a general
> > principle, I can't agree until speed.python.org is a going concern and we
> > can get a reasonable overview of any resulting performance implications.
> 
> Anybody can run the benchmark suite for himself, speed.p.o is
> (fortunately) not a roadblock:
> http://bugs.python.org/issue17170

And I meant to paste the repo URL actually:
http://hg.python.org/benchmarks/

Regards

Antoine.




More information about the Python-Dev mailing list