gpt4 book ai didi

c - 将 GHashTable 转储到文件

转载 作者:行者123 更新时间:2023-12-01 09:01:45 24 4
gpt4 key购买 nike

在我的应用程序中,我需要保存一个 Glib GHashTable 实例写入磁盘,稍后加载到内存。但是我找不到任何方法直接转储实例。

一个选项是不直接保存GHashTable,而是一个接一个的保存entry。加载时,逐个加载条目,并插入到新的哈希表中。但是我发现执行这个操作需要很多时间:

g_hash_table_insert(hash, (gpointer) (mer_v), (gpointer) m);

加载 6000 万个条目大约需要 20 分钟。如果我只是加载条目而不执行插入,则只需 10 秒。

那么有没有其他方法可以有效地保存 GHashTable 呢?谢谢

======================

更新:

我的哈希表键是 uint64_t。此代码运行大约 10 秒:

for (i = 0; i < 60000000; i++) {
tmp = (uint64_t*) malloc (sizeof(uint64_t));
*tmp = i;
g_hash_table_insert(hash, (gpointer) (tmp), (gpointer) tmp);
}

但是这段代码运行了10多分钟:

for (i = 0; i < meta->n_kmers; i++) {
m = g_ptr_array_index(kmer_list, i);
tmp = (uint64_t*) malloc (sizeof(uint64_t));
*tmp = m->s;
g_hash_table_insert(hash, (gpointer) (tmp), (gpointer) tmp);
}

我的大部分输入键 m->s 都是 ~60 位。

最佳答案

GHashTable 并未针对该数据集大小进行优化。您最好编写自己的哈希表。

关于c - 将 GHashTable 转储到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15661213/

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