Đối với số lượng bit nhỏ như vậy, việc lưu nhiều bit như Glorfindel đã chỉ ra là không thể . Tuy nhiên, nếu tên miền bạn đang sử dụng có thêm một vài bit, bạn có thể đạt được mức tiết kiệm đáng kể cho trường hợp trung bình bằng cách mã hóa phạm vi với giá trị bắt đầu và delta.
Giả sử miền là số nguyên, vì vậy 32 bit. Với cách tiếp cận ngây thơ, bạn cần 64 bit (bắt đầu, kết thúc) để lưu trữ một phạm vi.
Nếu chúng ta chuyển sang mã hóa (bắt đầu, delta), chúng ta có thể xây dựng phần cuối của phạm vi từ đó. Chúng ta biết rằng trong trường hợp xấu nhất, bắt đầu là 0 và delta có 32 bit.
2 ^ 5 là 32, vì vậy chúng tôi mã hóa độ dài của delta theo năm bit (không có độ dài bằng 0, luôn luôn thêm 1) và mã hóa trở thành (bắt đầu, chiều dài, delta). Trong trường hợp xấu nhất, chi phí này là 32 * 2 + 5 bit, do đó 69 bit. Vì vậy, trong trường hợp xấu nhất, nếu tất cả các phạm vi dài, điều này tồi tệ hơn thì mã hóa ngây thơ.
Trong trường hợp tốt nhất, nó có giá 32 + 5 + 1 = 38 bit.
Điều này có nghĩa nếu bạn có để mã hóa rất nhiều phạm vi, và những dao động mỗi chỉ bao gồm một phần nhỏ của tên miền của bạn, bạn sẽ chỉ sử dụng ít không gian trên trung bình sử dụng mã hóa này. Việc bắt đầu được phân phối như thế nào không quan trọng, vì khởi đầu sẽ luôn mất 32 bit, nhưng vấn đề là độ dài của các phạm vi được phân phối như thế nào. Nếu bạn càng có nhiều độ dài nhỏ, thì nén càng tốt, bạn càng có nhiều phạm vi bao trùm toàn bộ chiều dài của miền, mã hóa này sẽ càng tệ hơn.
Tuy nhiên, nếu bạn có nhiều phạm vi được nhóm xung quanh các điểm bắt đầu tương tự, (ví dụ vì bạn nhận được các giá trị từ một cảm biến), bạn có thể đạt được mức tiết kiệm thậm chí còn lớn hơn. Bạn có thể áp dụng kỹ thuật tương tự cho giá trị bắt đầu và sử dụng độ lệch để bù giá trị bắt đầu.
Hãy nói rằng bạn có 10000 phạm vi. Các phạm vi được nhóm xung quanh một giá trị nhất định. Bạn mã hóa sai lệch với 32 bit.
Sử dụng phương pháp ngây thơ, bạn sẽ cần 32 * 2 * 10 000 = 640 000 bit để lưu trữ tất cả các phạm vi đó.
Mã hóa sai lệch mất 32 bit và mã hóa mỗi phạm vi trong trường hợp tốt nhất sau đó 5 + 1 + 5 + 1 = 12 bit, với tổng số 120 000 + 32 = 120 032 bit. Trong trường hợp xấu nhất, bạn cần 5 + 32 + 5 + 32 bit, do đó 74 bit, với tổng số 740 032 bit.
Điều này có nghĩa, với 10 000 giá trị trên một miền cần 32 bit để mã hóa, chúng tôi nhận được
- 120 032 bit với mã hóa delta thông minh trong trường hợp tốt nhất
- 640 000 bit với khởi đầu ngây thơ, mã hóa kết thúc, luôn luôn (không có trường hợp tốt nhất hoặc tồi tệ nhất)
- 740 032 bit với mã hóa delta thông minh trong trường hợp xấu nhất
Nếu bạn lấy mã hóa ngây thơ làm cơ sở, điều đó có nghĩa là tiết kiệm tới 81,25% hoặc chi phí cao hơn tới 15,625%.
Tùy thuộc vào cách các giá trị của bạn được phân phối, những khoản tiết kiệm đó rất đáng kể. Biết lĩnh vực kinh doanh của bạn! Biết những gì bạn muốn mã hóa.
Là một phần mở rộng, bạn cũng có thể thay đổi sự thiên vị. Nếu bạn phân tích dữ liệu và xác định các nhóm giá trị, bạn có thể sắp xếp dữ liệu thành các nhóm và mã hóa từng nhóm đó một cách riêng biệt, với độ lệch riêng. Điều này có nghĩa là bạn có thể áp dụng kỹ thuật này không chỉ cho các phạm vi được nhóm xung quanh một giá trị bắt đầu mà còn cho các phạm vi được nhóm xung quanh nhiều giá trị.
Nếu điểm bắt đầu của bạn được phân phối đều, mã hóa này không thực sự hoạt động tốt.
Mã hóa này rõ ràng là cực kỳ xấu để lập chỉ mục. Bạn không thể đơn giản đọc giá trị x-th. Nó có thể khá nhiều chỉ được đọc tuần tự. Điều này phù hợp trong một số trường hợp, ví dụ: phát trực tuyến qua mạng hoặc lưu trữ hàng loạt (ví dụ: trên băng hoặc ổ cứng).
Đánh giá dữ liệu, nhóm nó và chọn độ lệch chính xác có thể là công việc đáng kể và có thể yêu cầu một số tinh chỉnh để có kết quả tối ưu.