我想对SAS散列表中的存储桶的定义做一点澄清。这个问题正是关于hashexp参数。hashexp指定的SAS HashTable中的表大小是什么?
根据该SAS文档,hashexp是:
散列对象的内部表的大小,其中,哈希表的大小为2n。
HASHEXP的值用作创建哈希表大小的二次幂指数。例如,HASHEXP的值为4相当于散列表大小为24或16.HASHEXP的最大值为20.
散列表大小不等于可以存储的项目数存储。将哈希表设想为一个“桶”阵列。哈希表大小为16将有16个桶。每个桶可以容纳无数的物品。散列表的效率在于散列函数将项目映射到并从桶中检索项目的能力。
您应该设置哈希表大小相对于哈希对象中的数据量,以最大限度地提高哈希对象查找例程的效率。尝试不同的HASHEXP值,直到获得最佳结果。例如,如果散列对象包含一百万个项目,则散列表大小为16(HASHEXP = 4)可以工作,但效率不高。散列表大小为512或1024(HASHEXP = 9或10)会导致最佳性能。
的问题是究竟是哈希表的大小,而不是数据的哈希对象中的量?
应该理解为我们是否想要分配尽可能多的内存,因为它可能是必需的,但不会少于,不多于。让事情快速发展是两个重要的力量。但它并不限制可能使用的数据量,它只是表示将使用多少数据,对吧?