首页 > 其他 > 详细

字符串操作join函数跟+号区别

时间:2019-03-26 23:50:04      阅读:217      评论:0      收藏:0      [点我收藏+]

可能区别:

字符串是不可变对象,当用操作符+连接字符串的时候,每执行一次+都会申请一块新的内存,然后复制上一个+操作的结果和本次操作的右操作符到这块内存空间,因此用+连接字符串的时候会涉及好几次内存申请和复制。而join在连接字符串的时候,会先计算需要多大的内存存放结果,然后一次性申请所需内存并将字符串复制过去,这是为什么join的性能优于+的原因。所以在连接字符串数组的时候,我们应考虑优先使用join
---------------------
作者:shs867
来源:CSDN
原文:https://blog.csdn.net/shs867/article/details/79924712
版权声明:本文为博主原创文章,转载请附上博文链接!

 

测试环境:python3.7

性能测试代码

技术分享图片
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()
View Code

 

性能测试结果

技术分享图片

 

结论:

join性能远远优于直接相加
但具体是不是如另一个博客所说,不得而知,明天进一步测试

 

 

参考

Python中连接字符串用join还是+

 

字符串操作join函数跟+号区别

原文:https://www.cnblogs.com/lurenjia1994/p/10604588.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!