书中在讲到字符串是不可变对象时,提出了一个建议,把字符串相加,写成列表的join,如下:
result = a + b
改写成,
result = ''.join([a, b])
以为,这样,可以避免不可变对象的拷贝问题。其实,python的函数调用成本,比这个字符串相加,导致的拷贝成本,本高得多——感谢@冒.。O〇泡。
今天,写了一个简单的程序测试,在我的机器上,直到10个长度为15的字符串相加,还是,比10个长度为15的字符串join,运行得快。代码,贻笑大方如下:
# -*- coding:utf-8 -*-
import random
import string
import time
chars = string.letters + string.digits + string.whitespace
def generate_string(length):
s = ''
while len(s) < length:
c = chars[random.randrange(len(chars))]
if c == 'n':
c = '\n'
elif c == 'r':
c = '\r'
elif c == 'f':
c = '\f'
elif c == 'v':
c = '\v'
s += c
return s;
def f(length, count):
L = []
L2 = []
for i in xrange(10000):
row = []
while len(row) < count:
row.append(generate_string(length))
pass
line = ""+"".join(row)
L.append("rv = "%s"" % line)
line2 = "","".join(row)
L2.append("rv = ''.join(["%s"])" % line2)
text = 'n'.join(L)
text2 = 'n'.join(L2)
t1 = time.time()
exec text
print time.time() - t1
t2 = time.time()
exec text2
print time.time() - t2
if __name__ == '__main__':
f(10, 15)
python的函数调用成本,比想象得高
《Python源码剖析》热门书评
-
万众期待的优秀著作
80有用 5无用 膘 2008-10-14
Python 是公认的优秀语言,而很多人可能并不知道,标准python实现,同样是非常优秀的C源码项目。它利用中立的标准C语言,洗练的实现了动态面向对象环境,使得Python语言的灵活和优雅得以充分体现。Python平台的C源码,本身就具体很高的学习价值。然而像其它成功的大型开源项目一样,庞大的代码...
-
我写的推荐序
31有用 20无用 Fenng 2008-07-09
非常高兴看到又一本原创 Python 图书的出版。说起来,我和 Python 还算有一点缘分。在 2000 年的时候,非常偶然的一次机会接触到Python,当时网上资料非常之少,不知天高地厚的我竟冒失地接手了国内第一本引进 Python 图书的合作翻译工作,往事不堪回首。记得当时经常有人问我 Pyt...
-
只说不足的
20有用 3无用 E.T 2009-07-10
好的方面已经有很多读者说过了,这里提一下我认为做得不好的几点,概括起来是“二多一缺”:二多:“口水话”多,本人认为对增进理解或过渡没有太大作用;typo 多,需要质疑一下校对者的水平。一缺:缺少参考书目,经常读国外技术书籍的人应该不会对bibliography这个词感到陌生吧,哪怕只引用了一句话,也...
-
态度诚恳,但是缺乏洞见
17有用 0无用 LipingTaBaBa 2012-01-12
这本书其实不是面向python用户的,而是剖析python的运行时实现。更适合于进阶C程序员以提高C语言能力。不过不知道是作者功底不够,还是时间太紧,很多地方作者罗里罗嗦的写了好几页纸,比人家源代码还长,可还没有源代码里的注释讲得清楚。我仔细看过的有第十六章《Python的内存管理机制》,下面以这个...
-
国内技术书籍神作
14有用 1无用 simonliu 2012-01-30
其实这本书已经在我书桌上摆了很久,断断续续看完了,后来又从头看了一遍,总体感觉呢就两个字“佩服”。作者在 Python 研究方面不一定是国内最牛的,关于作者的文笔风格争议也颇多,但是作者是第一个把研究 Python 的收获传播出来的人,光是这一点就比那些成天在那里嚷嚷说这不好、那不对的人高尚很多。也...
书名: Python源码剖析
作者: 陈儒
出版社: 电子工业出版社
副标题: 深度探索动态语言核心技术
出版年: 2008-6
页数: 480
定价: 69.80元
装帧: 平装
ISBN: 9787121068744