作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的应用程序中,我需要保存一个 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/
我正在为我的应用程序使用 Tank-Auth。我唯一的问题是激活和重置帐户密码。 用于登录、注册、注销;我对这些代码没有问题; $route['login'] = "/auth/login"; $ro
我是一名优秀的程序员,十分优秀!