Tôi muốn có một chút làm rõ về definiton của một xô trong SAS hashtable. Câu hỏi này chính xác về tham số hashexp.Chính xác kích thước bảng trong SAS HashTable được chỉ định bởi hashexp là gì?
Theo SAS Documents, hashexp là:
kích thước bảng nội bộ đối tượng băm, nơi kích thước của bảng băm là 2n.
Giá trị của HASHEXP được sử dụng làm số mũ lũy thừa để tạo kích thước bảng băm. Ví dụ: giá trị 4 cho HASHEXP tương đương với kích thước bảng băm là 24 hoặc 16. Giá trị tối đa cho HASHEXP là 20.
Kích thước bảng băm không bằng số lượng mục có thể được lưu trữ. Hãy tưởng tượng bảng băm là một mảng của 'nhóm'. Kích thước bảng băm 16 sẽ có 16 'nhóm'. Mỗi nhóm có thể chứa số lượng mục vô hạn. Hiệu quả của bảng băm nằm trong khả năng của hàm băm để ánh xạ các mục và lấy các mục từ các nhóm.
Bạn nên đặt kích thước bảng băm tương ứng với lượng dữ liệu trong đối tượng băm để tối đa hóa hiệu quả của các thủ tục tra cứu đối tượng băm. Hãy thử các giá trị HASHEXP khác nhau cho đến khi bạn nhận được kết quả tốt nhất. Ví dụ: nếu đối tượng băm chứa một triệu mục, kích thước bảng băm 16 (HASHEXP = 4) sẽ hoạt động nhưng không hiệu quả lắm. Kích thước bảng băm là 512 hoặc 1024 (HASHEXP = 9 hoặc 10) sẽ dẫn đến hiệu suất tốt nhất.
Câu hỏi đặt ra là những gì chính xác là một băm bảng kích thước, trong khi nó không phải là một số lượng dữ liệu trong đối tượng băm?
Nếu nó được hiểu như thể chúng tôi muốn phân bổ nhiều bộ nhớ vì nó có thể là cần thiết nhưng không kém, không còn nữa. Nó là một sức mạnh của hai để làm cho mọi thứ hoạt động nhanh. Nhưng nó không giới hạn số lượng dữ liệu có thể được sử dụng, nó chỉ cho biết số tiền sẽ được sử dụng, đúng không?