我想程式稍微熟的用者應該都清楚,
若在LIST中查詢字串是相當慢的,
畢竟他是逐一筆對結果是否符合,
如果要加速檢查是否在資料集中就必須用到特定資料格式。
而大多朋友都說在python中是SET查詢速度最快,
因為set格式就是用來做集合處理的,
而我平常都是用字典在查詢,(非主流被質疑)
雖然和字典原本功用有點偏離,
但在好奇心趨使下做了以下測試。
測試方法:
1. 查詢字串在DICT中的效率2. 查詢字串在SET中的效率
timeit.timeit(stmt='999 in box', setup='box=dict([(str(i),None)for i in xrange(100000)])', number=10000000)
0.34860
timeit.timeit(stmt='999 in box', setup='box=set(range(100000))', number=10000000)
0.49215
結論:
在字典DICT中查找特定字串略快於SET,
雖然我不是完全了解DICT和SET在記憶體中的結構差異,
雖然我不是完全了解DICT和SET在記憶體中的結構差異,
但這邊可以看出來,在DICT中查表效率較佳。
只不過DICT結構還要在塞個值,
可能較不方便, (需要塞個空值來減少記憶體消耗)
且對於Review Code的維護者會造成不小的困惑。
且對於Review Code的維護者會造成不小的困惑。
沒有留言:
張貼留言