Ili*_*iev 11 javascript python performance join string-concatenation
我已经看到了来自不同语言的几个例子,这些例子毫不含糊地证明了连接列表(数组)的元素比连接字符串要快一些.不幸的是我没有找到解释原因?有人可以解释在两种操作下都能运行的内部算法,为什么这种算法比另一种更快.
这是我的意思的python示例:
# This is slow
x = 'a'
x += 'b'
...
x += 'z'
# This is fast
x = ['a', 'b', ... 'z']
x = ''.join(x)
Run Code Online (Sandbox Code Playgroud)
谢谢提前)
Ant*_*nes 14
连接函数中的代码首先知道要求连接的所有字符串以及这些字符串的大小,因此它可以在开始操作之前计算最终的字符串长度.因此,它只需要为最终字符串分配一次内存,然后它可以将每个源字符串(和分隔符)放在内存中的正确位置.
另一方面,字符串上的单个+ =操作别无选择,只能为最终字符串分配足够的内存,而最终字符串只是两个字符串的串联.后续+ =必须相同,每个分配内存,在下一个+ =将被丢弃.每次将不断增长的字符串从内存中的一个位置复制到另一个位置.