有人问过哪个是最快的字符串连接方法,答案往往是''.join()
或%s
。但是,我刚刚运行了一个测试,并且使用+=
显着显着更快的时间,比任何其他选项的时间少了1%。
我的问题是:为什么我的结果与我读过的其他答案差别很大?这种情况特别独特吗?
注意:我在Python 2.7中运行它,并且无意很快就会迁移到3。
更新:根据@ Coldspeed的评论,此代码已使用timeit
进行了更新。结果似乎与之前的运行相同。
代码:
import timeit
print '+= : ' + \
str(timeit.Timer("new_string=''\nlong_string='lksjdliu3l9809c8098welkjwelrkjv99v8wfwlkj3'\n" +
"for i in range(10000): new_string += long_string").timeit(number = 5))
print "''.join() : " + \
str(timeit.Timer("new_string=''\nlong_string='lksjdliu3l9809c8098welkjwelrkjv99v8wfwlkj3'\n" +
"for i in range(10000): new_string = ''.join((new_string, long_string))").timeit(number = 5))
print "%s : " + \
str(timeit.Timer("new_string=''\nlong_string='lksjdliu3l9809c8098welkjwelrkjv99v8wfwlkj3'\n" +
"for i in range(10000): new_string = '%s%s' %(new_string, long_string)").timeit(number = 5))
print "{} : " + \
str(timeit.Timer("new_string=''\nlong_string='lksjdliu3l9809c8098welkjwelrkjv99v8wfwlkj3'\n" +
"for i in range(10000): new_string = '{}{}'.format(new_string, long_string)").timeit(number = 5))
结果(多次运行,总是大致相同):
+= : 0.00943579411126
''.join() : 2.76879656576
%s : 2.13202393986
{} : 1.60845005433