【发布时间】:2010-03-08 04:35:22
【问题描述】:
我正在查看某人发布的link about generators。一开始他比较了下面的两个函数。在他的设置中,他的发电机速度提高了 5%。
我正在运行 windows XP、python 3.1.1,并且似乎无法复制结果。当使用提供的日志和最多 1GB 的重复数据进行测试时,我一直显示“旧方式”(logs1)稍微快一些。
有人能帮我理解发生了什么不同吗?
谢谢!
def logs1():
wwwlog = open("big-access-log")
total = 0
for line in wwwlog:
bytestr = line.rsplit(None,1)[1]
if bytestr != '-':
total += int(bytestr)
return total
def logs2():
wwwlog = open("big-access-log")
bytecolumn = (line.rsplit(None,1)[1] for line in wwwlog)
getbytes = (int(x) for x in bytecolumn if x != '-')
return sum(getbytes)
*编辑,复制/粘贴中的间距搞砸了
【问题讨论】:
-
在我看来这两个功能本质上是相同的。在这两种情况下,您都没有构建一个庞大的列表,而您本来可以使用生成器。所以我对它们的运行速度差不多并不感到惊讶。
-
有道理,我只是好奇为什么他的速度提高了 5%,而我看到的速度一直在下降 1%。
标签: python python-3.x