timeit模块
class timeit.Timer(stmt=’’, setup=’’, timer)
timeit.Timer.timeit(number=) 设定运行次数
函数test1()已存在
def
from timeit import Timer
def t1():
l = []
for i in range(10000):
l.append(i)
def t2():
l = []
for i in range(10000):
l = l + [i]
def t3():
l = [i for i in range(10000)]
def t4():
l = list(range(10000))
def t5():
l = []
for i in range(10000):
l.extend([i])
def t6():
l = []
for i in range(10000):
l.insert(0, i)
timer1 = Timer("t1()", "from __main__ import t1")
print("append:", timer1.timeit(1000))
timer2 = Timer("t2()", "from __main__ import t2")
print("+:", timer2.timeit(1000))
timer3 = Timer("t3()", "from __main__ import t3")
print("[i for i]:", timer3.timeit(1000))
timer4 = Timer("t4()", "from __main__ import t4")
print("list(range):", timer4.timeit(1000))
timer5 = Timer("t5()", "from __main__ import t5")
print("extend:", timer5.timeit(1000))
timer6 = Timer("t6()", "from __main__ import t6")
print("extend:", timer6.timeit(1000))
output
append: 1.098251899999994
+: 1.2654654000000036
[i for i]: 0.43519179999999835
list(range): 0.16415600000000552
extend: 1.4581348999999975
extend: 27.413572600000002
l = l + [i] 与 l += [i] 处理逻辑不同,python将+=符号优化了
整型(int) 占四个字节(Byte),每个字节八位(bit)
一个字符(char)占一个字节
一个字节代表一个地址单元
地址本身占四个字节