【发布时间】:2014-04-24 07:02:04
【问题描述】:
我发现后者效率更高(快几个数量级)。这有什么原因吗?它是在 Python 2.7 中完成的。
block = data[y * block_length:y * (block_length + 1)] # Slow
对比
block = [data[y * block_length + z] for z in xrange(block_length)] # Fast
编辑:
使用 Numpy(这可能是原因),请参阅http://pastebin.com/88KkWd79 的代码
随着时间python test.py a 或time python test.py b 运行它,随着功率变大,函数b 开始花费更多、更长的时间。
【问题讨论】:
-
你如何确认后者更快?
-
使用命令时间。
-
@user2195592 你能给我们一些样本数据来运行测试吗?
-
My tests 显示相反。第一个代码块稍快。
-
请注意,这些并不等同!第一个列表有
y条目,第二个列表有block_length条目。你的意思是(y+1) * block_length?
标签: python performance list slice