Çeşitli veri yapılarının herhangi bir sıralaması, en azından kısmen sorun bağlamına bağlı olacaktır. Algoritmaların zaman ve mekan performansının nasıl analiz edileceğini öğrenmeye yardımcı olacaktır. Tipik olarak, "büyük O gösterimi" kullanılır, örneğin ikili arama O (log n) zamanındadır, yani bir elemanı arama zamanı eleman sayısının günlüğüdür (2 tabanında, örtük olarak). Sezgisel olarak, her adımda kalan verilerin yarısı ilgisiz olduğu için atıldığından, öğelerin sayısını iki katına çıkarmak süreyi 1 adım artıracaktır. (İkili arama oldukça iyi ölçeklenir.) Alan performansı, daha büyük veri kümeleri için bellek miktarının nasıl büyüdüğüyle ilgilidir. Ayrıca, büyük-O gösteriminin sabit faktörleri göz ardı ettiğini unutmayın - daha küçük veri kümeleri için, bir O (n ^ 2) algoritması daha yüksek sabit faktöre sahip bir O (n * log n) algoritmasından daha hızlı olabilir.
Zaman ve mekanın yanı sıra, diğer özellikler arasında bir veri yapısının sıralanıp sıralanmayacağı (ağaçların ve yüzeylerin sıralanması, karma tabloların sıralanmaması), kalıcılık (ikili ağaçlar eski sürümlerdeki işaretçileri yeniden kullanabilirken, karma tablolar yerinde değiştirilir) vb.
Bunları karşılaştırabilmek için birkaç veri yapısının davranışını öğrenmeniz gerekse de, performans açısından neden farklı olduklarını anlamanın bir yolu, birkaçını yakından incelemektir. Tek tek bağlantılı listeleri, ikili arama ağaçlarını ve atlanan listeleri karşılaştırmanızı öneririm , bunların hepsi nispeten basittir, ancak çok farklı özelliklere sahiptir. Bir değer bulmak, yeni bir değer eklemek, tüm değerleri sırayla bulmak vb. İçin ne kadar çalışma gerektiğini düşünün.
Algoritmaları / veri yapısı performansını analiz etme konusunda insanların önerdiği çeşitli metinler var, ancak onları bana gerçekten anlamlı kılan şey OCaml'ı öğrenmekti. Karmaşık veri yapılarıyla uğraşmak, ML'nin güçlü bir özelliğidir ve C'deki gibi işaretçilerden ve bellek yönetiminden kaçınabildiğinizde davranışları çok daha nettir (OCaml'i sadece veri yapılarını anlamak için öğrenmek neredeyse kesinlikle uzun bir yoldur. :))