В C++ есть вектор :: reserve(), чтобы эффективно выделять память заранее при построении строки. Даже без него мы можем построить строку в O (n), амортизированную.Эффективное строковое построение с неизменяемыми строками
Как эффективно создавать строки в языках, где строки неизменяемы, например python? Наивный метод добавления атома за раз, который отлично работает в C++ в O (n), представляется O (n^2), генерируя мусор для gc для O (n^2).
В Python вы обычно используете 'str.join()', который не собирается объединять кучу строк вместе под капотом (по крайней мере, в CPython). – Blender