python3字符串连接方法效率测试

本文通过测试比较了Python3中三种字符串连接方法:+连接符、.join()方法和'%s'格式化替换的效率。在不同场景下,join方法通常优于+连接符,而对于明文字符串,+连接符、'%s'替换和直接字符串连接方法表现相近。建议根据具体需求选择合适的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用代码来测试效率其实是不够准确的,每个人测出来的结果可能都不一样,况且随着类库版本升级也说不定哪天底层算法就变了,或者运行环境变了等等,那么现在这些测试就更不准确了。现阶段效率测试仅仅是给自己写脚本习惯找个理由而已。


测试环境基于centos6x32和python3,测试三种字符串连接方式:用连接符 +, 用.join()方法,和用‘%s' % (字符串替换)


测试办法是每一种连接做20次,循环10W次,一共做5次取平均时间作比较,分两种情况:

第一种情况,链接字符串用变量。主要代码如下:

a='a'

for i in range(cyc):
y = a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a;

for i in range(cyc):
y = ''.join([a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a]);

for i in range(cyc):
y = '%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s' % (a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a);

测试结果:+连接符0.19秒,join()方法0.11秒,%s替换方法0.17秒。


第二种情况,连接字符串用明文方式,加测了一种python独有的主要代码如下:

for i in range(cyc):
y = 'a'+'a'+'a'+'a'+'a'+'a'+'a'+'a'+'a'+'a'+'a'+'a'+'a'+'a'+'a'+'a'+'a'+'a'+'a'+'a';

for i in range(cyc):
y = ''.join(['a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a']);

for i in range(cyc):
y = '%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s' % ('a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a');

加测了一种python的字符串直接连接的方法

for i in range(cyc):
y = 'a''a''a''a''a''a''a''a''a''a''a''a''a''a''a''a''a''a''a''a';

测试结果:+连接符0.0099秒,join()方法0.071秒,%s替换方法0.0097秒,字符串直接连接方法0.0098秒。


额外测试,随着字符串的长度变长,各项测试用时均有一定幅度上升,+连接符和%s替换方式用时增加幅度明显高于join方法。在连接次数很庞大的情况下,比如上万次,+连接符用时会暴涨,但这里不做过多考虑,因为一般情况下用+连字符的情况很少高于20次。


总结: 

1. 如果对字符串变量作连接,优先用join方法。

2.如果对明文字符串做连接,优先用+连接符或%s替换方式或字符串直接连接,效果都要好于join。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值