【发布时间】:2014-06-18 02:54:34
【问题描述】:
我有一个简单的函数,它对列表进行分区并返回列表中的索引 i,使得索引小于 i 的元素小于 list[i] 并且索引大于 i 的元素更大。
def partition(arr):
first_high = 0
pivot = len(arr) - 1
for i in range(len(arr)):
if arr[i] < arr[pivot]:
arr[first_high], arr[i] = arr[i], arr[first_high]
first_high = first_high + 1
arr[first_high], arr[pivot] = arr[pivot], arr[first_high]
return first_high
if __name__ == "__main__":
arr = [1, 5, 4, 6, 0, 3]
pivot = partition(arr)
print(pivot)
python 3.4 的运行时间比 python 2.7.6 大得多 在 OS X 上:
time python3 partition.py
real 0m0.040s
user 0m0.027s
sys 0m0.010s
time python partition.py
real 0m0.031s
user 0m0.018s
sys 0m0.011s
在 ubuntu 14.04 / virtual box 上也是如此
python3:
real 0m0.049s
user 0m0.034s
sys 0m0.015s
蟒蛇:
real 0m0.044s
user 0m0.022s
sys 0m0.018s
python3 本身是否比 python2.7 慢,或者是否对代码进行了任何特定优化,使其运行速度与在 python2.7 上一样快
【问题讨论】:
-
使用
timeit模块比较代码执行,而不是time; Python 启动时间过多,随机操作系统事件(如磁盘刷新)也是如此。 -
我在尝试您的代码时意识到,
lasthigh是什么?由于lasthigh未初始化,开箱即用的代码将失败?请查看。 -
@PauloBu 你是对的。没有lasthigh 它实际上是first_high。固定的谢谢。
标签: python performance python-2.7 python-3.x generator