Eli*_*jah 3 java collections parallel-processing multithreading
更简洁一点,您可以使用多个线程来加速HashMap查找吗?是否有任何实现已经执行此操作?
在我的项目中,我们需要在内存中维护一个大的对象映射.我们从不在创建地图后修改地图,因此地图严格是只读的.但是,此映射上的读取和查找性能对于应用程序的成功至关重要.安装应用程序的系统通常具有许多可用的硬件线程.然而,我们的查找仅使用单个线程从HashMap中检索值.使用多个线程(可能在池中)的分而治之的方法是否有助于提高查找速度?
我的大多数谷歌搜索都没有结果 - 返回了很多关于并发问题而不是解决方案的结果.任何建议都会受到赞赏,但如果您知道开箱即用的解决方案,那就太棒了.
另外值得注意的是,所有键和值都是不可变的.散列码值是预先计算的,并在实例化时存储在对象本身中.
至于实现的细节,Map中有大约35,000个项目.键和值都是对象.键是自定义查找键,值是字符串.目前,我们每秒可处理大约5,000次查找(这包括一些其他逻辑的开销,但主要的瓶颈是地图实现本身).但是,为了满足我们未来的性能需求,我希望每秒可以获得大约10,000次查找.按照大多数正常标准,我们目前的实施速度很快 - 只是我们需要它更快.
在我们35,000个值的Map中,我们平均有一个哈希码冲突,所以我猜测哈希码的分布相当合理.
| 归档时间: |
|
| 查看次数: |
2504 次 |
| 最近记录: |