public class TestStr{ public static void main(String[] args){ StringBuffer buf = new StringBuffer(); int i; for(i = 0; i < 100; i++){ buf.append("s"); } String result = buf.toString(); System.out.println(result); } }
那在 python 中呢? python 中雖然無類似 StringBuffer 的物件,但是你可以使用 list 來代替。像這樣。
buf = [] for i in xrange(100): buf.append('s') ret = ''.join(buf) print ret
先把要做相加的字串都先存到 list 裡,最後再用字串的join方法將它們合併成一個字串。這樣做可以減少不必要的物件產生,也可以加快速度( gc 要回收的物件少很多)
事實上,stringIO也可以做到類似的事情。只是我覺得用 list 就差不多了。 使用stringIO的例子如下
import StringIO buf = StringIO.StringIO() for i in xrange(100): buf.write('s') ret = buf.getvalue() buf.close() print ret
這2個語言我都會一些(Python喜歡多些),我從來沒考慮到由於程式產生過多的暫時性物件,而導致gc的忙碌。這文章讓我學到東西,謝謝 :-)
回覆刪除