New submission from Dmitriy <miron...@icloud.com>:

There is an error in documentation about string concatenation:

https://docs.python.org/3/library/stdtypes.html

---
Common Sequence Operations
[...]
6. Concatenating immutable sequences always results in a new object. This means 
that building up a sequence by repeated concatenation will have a quadratic 
runtime cost in the total sequence length. To get a linear runtime cost, you 
must switch to one of the alternatives below:

- if concatenating str objects, you can build a list and use str.join() at the 
end or else write to an io.StringIO instance and retrieve its value when 
complete
---

It is not true for str objects anymore. Example using timeit module shows that 
time grows linearly:
>>> timeit('a+="a"', setup='a=""', number=10000)
0.0005754000012530014
>>> timeit('a+="a"', setup='a=""', number=100000)
0.005819800004246645

But for bytes it is still right:
>>> timeit('a+=b"a"', setup='a=b""', number=10000)
0.0017669000080786645
>>> timeit('a+=b"a"', setup='a=b""', number=100000)
0.20758410000416916

----------
assignee: docs@python
components: Documentation
messages: 347390
nosy: dmitriym, docs@python
priority: normal
severity: normal
status: open
title: Error in the documentation about string concatenation
type: enhancement
versions: Python 3.7

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

Reply via email to