from timeit import Timer
import timeit
import random
if __name__ == "__main__":
popzero = Timer("x.pop(0)", "from __main__ import x")
popend = Timer("x.pop()", "from __main__ import x")
print("pop(0) pop()")
for i in range(100000, 10000000, 1000000):
x = list(range(i))
pt = popend.timeit(number=1000)
x = list(range(i))
pz = popzero.timeit(number=1000)
print("%15.5f,%15.5f" % (pz, pt))
# 对比list和dict的in操作对比
# 设计一个性能试验来验证list中检索一个值,以及dict中检索一个值的计时对比
# 生成包含连续值的list和包含连续关键码key的dict,用随机数来实验操作符in的耗时
for i in range(10000, 100000, 20000):
t = timeit.Timer("random.randrange(%d) in x" % i, "from __main__ import random,x")
x = list(range(i))
lst_time = t.timeit(number=1000)
x = {j: None for j in range(i)}
d_time = t.timeit(number=1000)
print("%d,%10.3f,%10.3f" % (i, lst_time, d_time))
def test1():
l = []
for i in range(1000):
l += [i]
def test2():
l = []
for i in range(1000):
l.append(i)
def test3():
l = [i for i in range(1000)]
def test4():
l = list(range(1000))
t1 = Timer("test1()", "from __main__ import test1")
print("concat % seconds" % t1.timeit(number=1000))
t2 = Timer("test2()", "from __main__ import test2")
print("concat % seconds" % t2.timeit(number=1000))
t3 = Timer("test3()", "from __main__ import test3")
print("concat % seconds" % t3.timeit(number=1000))
t4 = Timer("test4()", "from __main__ import test4")
print("concat % seconds" % t4.timeit(number=1000))