gpt4 book ai didi

c++ - GHashTable 的大小/调整大小

转载 作者:太空宇宙 更新时间:2023-11-04 11:38:08 27 4
gpt4 key购买 nike

这是我的用例:我想使用 glib's GHashTable并使用 IP 地址作为键,并将此 IP 地址发送/接收的数据量作为值。例如,我成功地使用一些内核变量在用户空间中实现了整个问题,以便查看每个 IP 地址的卷。

现在的问题是:假设我有很多 IP 地址(即 500,000 到 1,000,000 个唯一地址)=> 真的不清楚分配的空间是多少以及给出的第一个大小 使用 (g_hash_table_new()/g_hash_table_new_full()) 时创建的新哈希表,以及整个过程如何在后台运行。众所周知,调整哈希表的大小时可能会花费很多时间。那么我们如何使用这些参数呢?

最佳答案

都不是<a href="http://developer.gnome.org/glib/stable/glib-Hash-Tables.html#g-hash-table-new" rel="noreferrer noopener nofollow">g_hash_table_new()</a>也不<a href="http://developer.gnome.org/glib/stable/glib-Hash-Tables.html#g-hash-table-new-full" rel="noreferrer noopener nofollow">g_hash_table_new_full()</a>让您指定尺寸。

哈希表的大小仅作为存储在其中的值的数量提供,您无权访问通常在实现中使用的实际数组大小。

但是,<a href="http://developer.gnome.org/glib/stable/glib-Miscellaneous-Utility-Functions.html#g-spaced-primes-closest" rel="noreferrer noopener nofollow">g_spaced_primes_closest()</a> 的存在有点暗示 glib 的哈希表使用素数大小的内部数组。

我想说,虽然一百万个 key 很多,但并不是特别多。尝试一下,然后衡量性能以确定是否值得深入挖掘。

关于c++ - GHashTable 的大小/调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6070220/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com