İlk olarak, bir sözlük boyutunu başlangıçta ayarlayabileceğinizi söylediğinizi duydum, ancak bunun nasıl yapılacağını anlatan hiçbir belge veya PEP görmedim.
Bunu aklımda tutarak, aşağıda açıklanan ürün miktarınızda bir analiz yaptım. Her seferinde sözlüğümü yeniden boyutlandırmak biraz zaman alabilir, ancak en azından performansını test edene kadar endişelenmeden ilerlemenizi tavsiye ederim.
Yeniden boyutlandırmayı belirlemede bizi ilgilendiren iki kural, öğe sayısı ve yeniden boyutlandırma faktörüdür. Bir sözlük, 2/3 işaretinin üzerine koyarak öğenin eklenmesiyle 2/3 dolduğunda kendini yeniden boyutlandıracaktır. 50.000 elemanın altında 4 kat artacaktır, bu miktarın üzerinde 2 kat olacaktır. 10.000.000 öğenin tahminini kullanarak (2^23 ve 2^24 arasında) sözlüğünüz 15 kez yeniden boyutlandırılacaktır (50k'nin 7 katı altında, Yukarıda 8 kez). Başka bir yeniden boyutlandırma, 11.100.000'den sonra gerçekleşir.
Güncel öğeleri yeniden boyutlandırma ve değiştirme, biraz zaman alacaktır, ancak merak ediyorum ki, yakınlarda bulunan kodda neler olup bittiğini farkedin. Her bir sınır boyunca beş yerde eklemeleri 2^3 ile 2^24 arasındaki sözlük boyutlarından karşılaştıran bir zamanlama paketini bir araya getirdim ve "kenarlık" eklemeleri "sınırsız" ekleme işlemlerinden ortalama 0.4 nanosaniye daha uzundu. Bu% 0.17 daha uzun ... muhtemelen kabul edilebilir. Tüm işlemler için minimum 0,2085 mikrosaniyeydi ve maksimum 0.2412 mikrosaniyeydi.
Bu durum çok iyi anlaşılırdır ve kodunuzun performansını kontrol ederseniz, lütfen bir düzenleme ile takip edin! Sözlük iç için My birincil kaynak PyCon 2010'da Brandon Rodos tarafından verilen görkemli bir konuşmaydı: The Mighty Dictionary
olası kopyası [Python - Başlangıç kapasitesine sahip bir liste oluşturun] (http://stackoverflow.com/questions/311775/python-create-a-list-with-initial-capacity) – msw
kopya parçası. Bir dict bir liste ile aynı değildir. –
olası bir kopyası [Python'da bir sözlük için başlangıç boyutu nasıl ayarlanır?] (Http://stackoverflow.com/questions/1298636/how-to-set-initial-size-for-a-dictionary-in-python) – psmears