C++ GHashTable的大小/调整大小
这是我的用例:我想使用和使用IP地址作为密钥,并将此IP地址发送/接收的数据的卷作为值。例如,为了查看每个IP地址的卷,我使用一些内核变量成功地在用户空间中实现了整个问题 现在的问题是:假设我有很多IP地址(即500000到1000000个Unique)=>真的不清楚分配给新哈希表的空间和第一个大小(C++ GHashTable的大小/调整大小,c++,c,linux,arrays,multidimensional-array,C++,C,Linux,Arrays,Multidimensional Array,这是我的用例:我想使用和使用IP地址作为密钥,并将此IP地址发送/接收的数据的卷作为值。例如,为了查看每个IP地址的卷,我使用一些内核变量成功地在用户空间中实现了整个问题 现在的问题是:假设我有很多IP地址(即500000到1000000个Unique)=>真的不清楚分配给新哈希表的空间和第一个大小(g_hash_table_new()/g_hash_table_new_full())是什么,以及整个事情在背景下是如何运作的。众所周知,调整哈希表的大小时可能需要花费大量时间。那么我们如何处理这些
g_hash_table_new()
/g_hash_table_new_full())是什么,以及整个事情在背景下是如何运作的。众所周知,调整哈希表的大小时可能需要花费大量时间。那么我们如何处理这些参数呢?无论是
还是
都不允许您指定大小
哈希表的大小仅作为存储在其中的值的数量可用,您无法访问实现中通常使用的实际数组大小
然而,
的存在暗示glib的哈希表使用了一个素数大小的内部数组
我要说的是,尽管一百万把钥匙相当多,但这并不特别。尝试一下,然后测量性能以确定是否值得深入挖掘。谢谢你的回答,但我真的不知道如何在实际程序中使用“g_spaced_primes_closest()”,所以我应该在声明新哈希表后使用此函数??例如,您认为如何使用它来存储1000个IP@作为密钥?