在此page,我看到一些有趣的事情:在字典中使用字符串作爲鍵總是更快嗎?
請注意,沒有對類型的字典是(實踐)只處理海峽鍵快速路徑;這不會影響算法的複雜性,但它可以顯着影響常數因素:典型程序完成的速度。
那究竟是什麼意思?
這是否意味着使用字符串作爲關鍵總是更快?
如果是,爲什麼?
更新:
感謝有關優化建議!但我實際上對簡單的事實更感興趣,而不是是否或何時應該優化。
更新2:
感謝偉大的答案,我會舉從@DaveWebb這裏提供的link內容:
「 ...
ma_lookup最初設置爲lookdict_string函數(在3.0中更名爲lookdict_unicode),其作爲因爲詞典中的鍵和被搜索的鍵都是標準的PyStringObject。然後,它可以進行一些優化,例如減輕各種錯誤檢查,因爲字符串到字符串的比較決不會引發異常。也不需要進行豐富的對象比較,這意味着我們避免直接調用PyObject_RichCompareBool,並始終使用_PyString_Eq。
... 「
此外,對於實驗的數字,我想如果沒有INT-到字符串的轉換
我想這一切都歸結爲關鍵對象的__hash__方法有多快。我猜想,對一個字符串進行散列相當簡單,但我會對字典查找花費在散列中的比例非常感興趣。 – Wilduck
您的更新不會改變任何內容。不,在大多數情況下,除非你的鑰匙是絃樂器,否則它不會更快。 –
@Lattyware鏈接頁面似乎意味着每個查詢*的速度提高*不僅僅是用於構建。 – Wilduck