从空列表中弹出
Pop from empty list
我想计算'pop'的时间。
这是代码。
x=list(range(10000))
popz=timeit.Timer("x.pop(0)","from __main__ import x")
print (popz.timeit())
IndexError: pop from empty list
如何从列表的开头获取pop的时间
默认情况下,timeit
method 运行一百万次。但是,您的列表只有 10000 个项目。所以当 timeit
运行时,前 10000
次会愉快地弹出,但 10001
迭代会失败。您可以明确设置次数:
popz.timeit(n=10000)
但是...这是一个非常棘手的计时情况,因为您想计算到 .pop
需要多长时间,但是列表的大小在不断变化。如果您正在寻找渐近性能,您可能可以验证 .pop(0)
具有 O(N) 的渐近性能。然而,具体的时间将很难得到,因为您要么必须计算创建列表所需的时间以及 .pop
、 或 当您计时时,列表会不断变化。这些都不是理想的......但我想这就是尝试为非幂等方法计时的问题......
这样试试
>>> import timeit
>>> x=list(range(10000))
>>> timeit.timeit("x.pop(0)","from __main__ import x", number=len(x))
0.01635134604293853
也许你可以尝试在 pop 之前和之后定义的两个变量 (datetime) 之间使用不同的值。
我不确定,但也许是这样)
但是有一个错误,它等于第二次变量赋值的时间(在"pop"之后)。
import datetime
a = datetime.datetime.now()
# ...wait a while...
b = datetime.datetime.now()
print(b-a)
好吧,我不确定这种情况下 timedelta 的准确性。
我想计算'pop'的时间。 这是代码。
x=list(range(10000))
popz=timeit.Timer("x.pop(0)","from __main__ import x")
print (popz.timeit())
IndexError: pop from empty list
如何从列表的开头获取pop的时间
默认情况下,timeit
method 运行一百万次。但是,您的列表只有 10000 个项目。所以当 timeit
运行时,前 10000
次会愉快地弹出,但 10001
迭代会失败。您可以明确设置次数:
popz.timeit(n=10000)
但是...这是一个非常棘手的计时情况,因为您想计算到 .pop
需要多长时间,但是列表的大小在不断变化。如果您正在寻找渐近性能,您可能可以验证 .pop(0)
具有 O(N) 的渐近性能。然而,具体的时间将很难得到,因为您要么必须计算创建列表所需的时间以及 .pop
、 或 当您计时时,列表会不断变化。这些都不是理想的......但我想这就是尝试为非幂等方法计时的问题......
这样试试
>>> import timeit
>>> x=list(range(10000))
>>> timeit.timeit("x.pop(0)","from __main__ import x", number=len(x))
0.01635134604293853
也许你可以尝试在 pop 之前和之后定义的两个变量 (datetime) 之间使用不同的值。
我不确定,但也许是这样) 但是有一个错误,它等于第二次变量赋值的时间(在"pop"之后)。
import datetime
a = datetime.datetime.now()
# ...wait a while...
b = datetime.datetime.now()
print(b-a)
好吧,我不确定这种情况下 timedelta 的准确性。