gpt4 book ai didi

scala - 大 map 的不可变 map 实现

转载 作者:行者123 更新时间:2023-12-04 02:38:19 28 4
gpt4 key购买 nike

如果我有 不可变 我可能期望(在很短的时间内——比如几秒钟)从中添加/删除数十万个项目的 map 是标准的 HashMap一个坏主意?假设我想在不到 10 秒的时间内通过 Map 传递 1Gb 的数据,使得 Map 在任何时刻的最大大小仅为 256Mb。

我的印象是 map 保留了某种“历史”,但我将始终访问最后更新的表(即我不传递 map ),因为它是 Actor 的私有(private)成员变量仅从 react 内部更新/访问。

基本上我怀疑这个数据结构可能(部分)有错误for issues I am seeing around JVMs going out of memory在短时间内读取大量数据时。

使用不同的 map 实现会更好吗?如果是这样,它是什么?

最佳答案

哎哟。为什么必须使用不可变映射?可怜的垃圾收集器!除了 (log n) 时间之外,不可变映射通常每个操作需要 (log n) 个新对象,或者它们实际上只是将可变哈希映射和层变更集包装在顶部(这会减慢速度并增加对象创建的数量)。

不变性很棒,但在我看来,现在不是使用它的时候。如果我是你,我会坚持 scala.collection.mutable.HashMap .如果您需要并发访问,请将 Java util.concurrent 包装起来。

您可能还想增加 JVM 中年轻代的大小:-Xmn1G或更多(假设您使用 -Xmx3G 运行)。此外,使用吞吐量(并行)垃圾收集器。

关于scala - 大 map 的不可变 map 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2298046/

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