在单个线程中创建和使用 Scala Map 时,最好的选择是什么? (就像在 StringBuffer 与 StringBuilder 上构造字符串的 java 类似的最佳赌注)。
选择 Map 的约束类型是:
我调查过
测试表明,50000 个 key 没有明显的赢家。
我找到了一些
然而,问题是在这种情况下,一般来说什么是最安全的赌注,为什么?
最佳答案
如果您的 map 不是非常小也不是很大,并且您的 key 是 String
,然后 collection.mutable.AnyRefMap
是个好赌注。 collection.mutable.LongMap
如果您可以拥有 Long
甚至更快键。它们存在的原因正是为了快速处理常见用例。
如果大多数 map 都非常小(0-4 个元素),那么 LinkedHashMap
往往是最好的,因为它避免了哈希表的开销。 (不可变映射在 4 个或更少元素时也不错。)
如果映射真的很大(数以百万计的键/值对),那么标准 collection.mutable.HashMap
是要走的路,因为当您用完单独键的空间时,性能会稍微降低一点。
关于performance - Scala 最高效的 Map 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29063964/