这是我的用例:我想使用glib's GHashTable并使用IP地址作为密钥,并将此IP地址发送/接收的数据量作为值。例如,我成功地使用一些内核变量在用户空间中实现了整个问题,以便查看每个IP地址的卷。
现在的问题是:假设我有很多IP地址(即500,000到1,000,000 uniques)=>真的不清楚分配的空间是什么,给出的第一个大小到使用(g_hash_table_new()
/ g_hash_table_new_full()
)时创建的新哈希表,以及整个事情在后台运作。众所周知,在调整哈希表的大小时,可能需要花费很多时间。那么我们如何才能使用这些参数?
答案 0 :(得分:1)
g_hash_table_new()
和g_hash_table_new_full()
都不允许您指定尺寸。
哈希表的大小仅作为存储在其中的值的数量而可用,您无权访问通常在实现中使用的实际数组大小。
然而,存在glib's哈希表使用大小的内部数组的g_spaced_primes_closest()
种提示。
我想说,虽然一百万把钥匙很多,但并不是特别的。尝试一下,然后测量性能,以确定是否值得深入挖掘。