import time
def count_time(func):
def int_time(*args, **kwargs):
start_time = time.time() # 程序开始时间
res = func(*args, **kwargs)
over_time = time.time() # 程序结束时间
total_time = over_time - start_time
print('程序%s运行用时%s秒' % (func.__name__, total_time))
return res
return int_time
index = 0.8
list = []
@count_time
def setList(maxSize):
for i in range(maxSize):
list.append(i)
@count_time
def inList(maxSize):
for i in range(int(maxSize ** index)):
i in list
@count_time
def searchList(maxSize):
for i in range(int(maxSize ** index)):
list[i]
dict = {}
@count_time
def setDict(maxSize):
for i in range(maxSize):
i in dict
@count_time
def searchDict(maxSize):
for i in range(int(maxSize ** index)):
dict.get(i)
@count_time
def inDict(maxSize):
for i in range(int(maxSize ** index)):
i in dict
for i in range(3, 8):
print('-----------------i:%d,maxSize:%d-----------------' % (i, 100 ** i))
maxSize = 10 ** i
setList(maxSize)
setDict(maxSize)
inList(maxSize)
inDict(maxSize)
searchList(maxSize)
searchDict(maxSize)
结果如下
D:\Anaconda\python.exe I:/pythonWorkSpace/myBrushRecords/myBrushRecord/exercise/testFile01.py
-----------------i:3,maxSize:1000000-----------------
程序setList运行用时0.0秒
程序setDict运行用时0.0010001659393310547秒
程序inList运行用时0.0秒
程序inDict运行用时0.0秒
程序searchList运行用时0.0秒
程序searchDict运行用时0.0秒
-----------------i:4,maxSize:100000000-----------------
程序setList运行用时0.00099945068359375秒
程序setDict运行用时0.0秒
程序inList运行用时0.023985624313354492秒
程序inDict运行用时0.0秒
程序searchList运行用时0.0秒
程序searchDict运行用时0.00099945068359375秒
-----------------i:5,maxSize:10000000000-----------------
程序setList运行用时0.00799703598022461秒
程序setDict运行用时0.004996538162231445秒
程序inList运行用时0.7625470161437988秒
程序inDict运行用时0.0秒
程序searchList运行用时0.0009996891021728516秒
程序searchDict运行用时0.0009992122650146484秒
-----------------i:6,maxSize:1000000000000-----------------
程序setList运行用时0.11193561553955078秒
程序setDict运行用时0.10194039344787598秒
程序inList运行用时33.38077139854431秒
程序inDict运行用时0.0039975643157958984秒
程序searchList运行用时0.0029985904693603516秒
程序searchDict运行用时0.005997657775878906秒
Process finished with exit code 0
总结:如果仅判断值是否在list和dict中,则dict占有绝对优势,但是要获取list和dict中的值,则速度差不多,甚至比list慢。