【发布时间】:2022-01-12 13:10:21
【问题描述】:
我正在处理递归连接到大约 8000 万个字符长度的字符串。随着字符串长度的增加,Python 的速度会急剧下降。
考虑以下循环:
s = ''
for n in range(0,r):
s += 't'
我测量运行时间为 r = 800,000 时为 86 毫秒,r = 8,000,000 时为 3.11 秒,r = 80,000,000 时为 222 秒
我猜这与 python 如何为字符串分配额外的内存有关。有没有办法加快这个速度,比如在声明字符串 s 的时候分配完整的 80MB?
【问题讨论】:
-
使用
list,附加各个字符串,然后''.join在末尾span> -
或者,使用
bytearray和bytes -
不要在字符串上使用
+,这是低效的。在列表中使用' '.join()。或者对于你的例子r * 't'会做的伎俩
标签: python string memory-management