求一个支持并发读写的数据结构
資深大佬 : yujianwjj 5
场景是,先加载 500 万个 sha256 字符串到内存中,后面会需要大量的对这 500 万个字符串进行查找操作。
现在的实现方法是用 map,先单线程加载 500 万个字符串到 map 中,但是插入效率低。有没有其他支持并发写,且查询效率高的数据结构。
写和读是分开的。不存在同时读写的情况。
大佬有話說 (15)
场景是,先加载 500 万个 sha256 字符串到内存中,后面会需要大量的对这 500 万个字符串进行查找操作。
现在的实现方法是用 map,先单线程加载 500 万个字符串到 map 中,但是插入效率低。有没有其他支持并发写,且查询效率高的数据结构。
写和读是分开的。不存在同时读写的情况。
假如是 java,你直接上 concurrenthashmap 是否可以满足需求?
或者像前面说的那样,把 key 分段读写。
复杂点,能不能先并发插入 concurrenthashmap,先应付着查询,然
后台起个线程再慢慢拷贝到普通 map,弄完了来个原子交换。缺点是内存峰值会大不少
影响 map 读写效率的的因素:
1. 哈希的计算
2. 扩缩容
3. 处理哈希冲突
ps.已知条件太少,单从你给的条件看,可做的“优化”多了去了