Bu kadar az sayıda bit için, Glorfindel'in belirttiği gibi birçok bitin tasarruf edilmesi olanaksızdır . Ancak, kullandığınız alanın birkaç bit daha varsa, aralıkları başlangıç değeri ve delta ile kodlayarak ortalama durum için önemli tasarruf sağlayabilirsiniz.
Etki alanının tamsayılar olduğunu varsayalım, yani 32 bit. Naif bir yaklaşımla, bir aralığı saklamak için 64 bit'e (başlangıç, bitiş) ihtiyacınız vardır.
Eğer bir kodlamaya (başlangıç, delta) geçersek, bu aralığın sonunu yapabiliriz. En kötü durumda, başlangıcın 0 olduğunu ve deltanın 32 bit olduğunu biliyoruz.
2 ^ 5 32'dir, bu yüzden deltanın uzunluğunu beş bit olarak kodlar (sıfır uzunluk yoktur, her zaman 1 ekler) ve kodlama olur (başlangıç, uzunluk, delta). En kötü durumda, bu maliyet 32 * 2 + 5 bit, yani 69 bit. Yani en kötü durumda, eğer tüm aralıklar uzunsa, naif kodlamadan daha kötüdür.
En iyi durumda, 32 + 5 + 1 = 38 bit.
Bunun anlamı, çok sayıda aralık kodlamanız ve bu alanların her biri alanınızın yalnızca küçük bir kısmını kapsıyorsa, bu kodlamayı kullanarak ortalama olarak daha az alan kullanmanız demektir. Başlangıçların her zaman 32 bit alacağı için başlangıçların nasıl dağıtıldığı önemli değildir, ancak aralıkların uzunluklarının nasıl dağıldığı fark eder. Ne kadar küçük uzunluklara sahipseniz, sıkıştırma o kadar iyi olursa, alanın tüm uzunluğu o kadar fazla aralığa sahip olursa, bu kodlamanın o kadar kötü olur.
Bununla birlikte, benzer başlangıç noktaları etrafında gruplanmış çok sayıda aralığınız varsa (örneğin bir sensörden değerler aldığınız için), daha da büyük tasarruf elde edebilirsiniz. Aynı tekniği başlangıç değerine uygulayabilir ve başlangıç değerini dengelemek için bir önyargı kullanabilirsiniz.
Diyelim ki 10000 çeşidiniz var. Aralıklar belirli bir değer etrafında gruplandırılmıştır. Önyargıyı 32 bit ile kodlarsınız.
Saf yaklaşımı kullanarak, tüm bu aralıkları depolamak için 32 * 2 * 10 000 = 640 000 bit gerekir.
Önyargının kodlanması 32 bit sürer ve her aralığın kodlanması en iyi durumda 5 + 1 + 5 + 1 = 12 bit alır, toplam 120 000 + 32 = 120 032 bit. En kötü durumda, toplam 740 032 bit için 5 + 32 + 5 + 32 bit, dolayısıyla 74 bit gerekir.
Bunun anlamı, 32 bit kodlayan bir alandaki 10 000 değer için
- En iyi durumda akıllı delta kodlaması ile 120 032 bit
- Naif başlangıçlı 640.000 bit, son kodlama, her zaman (en iyi veya en kötü durum)
- En kötü durumda akıllı delta kodlaması ile 740 032 bit
Saf kodlamayı temel olarak alırsanız, bu% 81.25'e varan tasarruf veya% 15.625'e varan daha fazla maliyet anlamına gelir.
Değerlerinizin nasıl dağıldığına bağlı olarak, bu tasarruflar önemlidir. İş alanınızı bilin! Neyi kodlamak istediğinizi bilin.
Bir uzantı olarak, önyargıları da değiştirebilirsiniz. Verileri analiz eder ve değer gruplarını belirlerseniz, verileri kovalara ayırabilir ve bu kovaların her birini ayrı ayrı kendi önyargılarıyla kodlayabilirsiniz. Bu, bu tekniği yalnızca tek bir başlangıç değerinde gruplanmış aralıklara değil, aynı zamanda birden çok değer etrafında gruplanmış aralıklara da uygulayabileceğiniz anlamına gelir.
Eğer başlangıç noktalarınız eşit olarak dağıtılmışsa, bu kodlama gerçekten iyi çalışmaz.
Bu kodlamanın açıkça endekslenmesi çok kötü. Sadece x-th değerini okuyamazsınız. Hemen hemen sadece sırayla okunabilir. Bazı durumlarda uygun olan, örneğin ağ üzerinden akış veya toplu depolama (örneğin, kaset veya HDD).
Verilerin değerlendirilmesi, gruplanması ve doğru önyargının seçilmesi önemli bir iş olabilir ve optimal sonuçlar için bazı ince ayarlamalar gerektirebilir.