timeit模块
class timeit.Timer(stmt=’’, setup=’’, timer)
timeit.Timer.timeit(number=) 设定运行次数
函数test1()已存在
def
from timeit import Timerdef 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.43519179999999835list(range): 0.16415600000000552extend: 1.4581348999999975extend: 27.413572600000002
l = l + [i] 与 l += [i] 处理逻辑不同,python将+=符号优化了
整型(int) 占四个字节(Byte),每个字节八位(bit)
一个字符(char)占一个字节
一个字节代表一个地址单元
地址本身占四个字节
