blog mail me! feed

字符串连接性能.

以前看了不少有关.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显然还要大得多.

我个人估计是”+”操作的需要不停的申请分配内存,
导致的性能低下?

Leave a Comment