以前看了不少有关.NET下String和StringBuilder的性能对比,
前几天正好也看到了est分享的一篇讲Python一些tricks的文章,
里边提到了用”+”连接字符串的性能问题.
早上顺手做了个benchmark.
首先用list插入元素, 接着用join方法连接字符串:
import time
pad = "xYz%2#$lkjw4" * 50
pad_pool = []
t_s = time.time()
for x in xrange(10000):
pad_pool.append(pad)
base = "".join(pad_pool)
print "time:", time.time() - t_s
time: 0.0179998874664
接着用”+”来连接字符串:
import time
base = ""
pad = "xYz%2#$lkjw4" * 50
t_s = time.time()
for x in xrange(10000):
base += pad
print "time:", time.time() - t_s
time: 10.5399999619
————————————–
嗯, 用”+”来连接很有点惨烈啊, 这和.NET里的String的直接连接有点像,
不过这两个时间间的gap显然还要大得多.
我个人估计是”+”操作的需要不停的申请分配内存,
导致的性能低下?