請原諒我以這樣的一般方式提問,因爲我確定他們的表現取決於他們的使用方式,但在我的情況下,collections.deque
比我想要驗證值的存在方式要慢得多。爲什麼collections.deque比collections.defaultdict慢?
我使用了spelling correction from Peter Norvig來驗證用戶對一小組單詞的輸入。由於我沒有使用詞頻詞典,所以我最初使用簡單的list
而不是defaultdict
,但只要我注意到單個單詞查找花費了大約25秒,就用deque
代替了它。
令人驚訝的是,這並不比使用list
快,所以我返回使用defaultdict
,它幾乎是瞬間返回結果。
有人可以向我解釋這種性能差異嗎?
在此先感謝
PS:如果你一個人想重現我在說什麼,改變弱勢族羣的劇本以下行。
-NWORDS = train(words(file('big.txt').read()))
+NWORDS = collections.deque(words(file('big.txt').read()))
-return max(candidates, key=NWORDS.get)
+return candidates
非常感謝你對此深入的回答。 – jnns