Python 2.7字符串连接奇数时序结果

时间:2017-06-18 15:46:35

标签: python string-concatenation

有人问过哪个是最快的字符串连接方法,答案往往是''.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

0 个答案:

没有答案