字符串是不可变对象,当用操作符+连接字符串的时候,每执行一次+都会申请一块新的内存,然后复制上一个+操作的结果和本次操作的右操作符到这块内存空间,因此用+连接字符串的时候会涉及好几次内存申请和复制。而join在连接字符串的时候,会先计算需要多大的内存存放结果,然后一次性申请所需内存并将字符串复制过去,这是为什么join的性能优于+的原因。所以在连接字符串数组的时候,我们应考虑优先使用join
---------------------
作者:shs867
来源:CSDN
原文:https://blog.csdn.net/shs867/article/details/79924712
版权声明:本文为博主原创文章,转载请附上博文链接!
from time import time import functools TOTAL_NUM = 10**6 BASE_STR = ‘basebase‘ def excute_time(func): @functools.wraps(func) def inner(*args, **kw): start_time = time() res = func(*args, **kw) end_time = time() print(‘{} 执行耗时{:.3f}秒‘.format(func.__name__, end_time-start_time)) return res return inner def create_str(n=TOTAL_NUM): ‘‘‘生成字符串‘‘‘ while n>0: n -= 1 yield BASE_STR @excute_time def str_merge_by_add(): ‘‘‘测试字符串相加‘‘‘ base_str = BASE_STR strs = create_str() for item in strs: base_str += item @excute_time def str_merge_by_join(): ‘‘‘测试join函数‘‘‘ base_str = BASE_STR strs = create_str() for item in strs: base_str.join(item) if __name__ == ‘__main__‘: for i in range(3): str_merge_by_add() str_merge_by_join()
join性能远远优于直接相加
但具体是不是如另一个博客所说,不得而知,明天进一步测试
原文:https://www.cnblogs.com/lurenjia1994/p/10604588.html