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

来源:互联网 发布:淘宝分享有礼活动效果 编辑:程序博客网 时间:2024/06/05 08:24

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


测试环境基于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。



0 0
原创粉丝点击