piglei / one-python-craftsman

来自一位 Pythonista 的编程经验分享,内容涵盖编码技巧、最佳实践与思维模式等方面。

Home Page:https://www.piglei.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

对推荐使用+=连接字符串而不用join有疑问

shuax opened this issue · comments

commented

我在python3.7.2上面测试join比+=快200倍

你好,二者会有性能差距,但是 200 倍我认为不太合理。方便发一下你的测试代码片段吗?

commented
import time

def timeit(method):
    def timed(*args, **kw):
        ts = time.time()
        ret = method(*args, **kw)
        te = time.time()
        print('{0} {1:.2f}s'.format(method.__name__, te - ts))
        return ret
    return timed

@timeit
def test1():
    data = ""
    for _ in range(10000):
        data += "123456789"*100
    return len(data)

@timeit
def test2():
    data = []
    for _ in range(1000000):
        data.append("123456789"*100)
    data = "".join(data)
    return len(data)

print(test1())
print(test2())

由于test2实在太快,我多循环了100倍。
运行结果是:

test1 3.44s
9000000
test2 0.47s
900000000
commented

我在linux上未能重现,两者速度差不多,可能是windows版本优化差吧。