5

在Java中,根据集合的用途,我们不使用相同的实现(即ArrayList vs LinkedList)。

来自 Java 背景,有人能告诉我关于 Scala 集合和性能注意事项我应该知道些什么吗?

Scala List 的不可变版本似乎是某种不可变的 LinkedList。在 Coursera 上学习 Martin Odersky 课程后,我理解了这些概念。同样,我理解为什么前置比附加更有效,特别是当你有一个不可变列表时。

我想知道所有(或大部分)关于 Scala 集合性能的这些棘手的事情,这样我自己就不会觉得很难。有人能帮我吗?

谢谢

4

2 回答 2

8

有一个描述收集性能特征的文档。除此之外,您真的应该在微基准测试中测试您的用例。在某些情况下,Scala 集合的性能非常接近 Java 集合;在其他方面存在差距(例如地图);在其他情况下,没有 Java 类比,不可变与可变的比较在很大程度上取决于您如何使用集合(很明显,大量突变有利于可变集合,而大量重用/复制有利于不可变集合)。

于 2012-10-20T01:05:35.293 回答
1

这并没有具体回答您的问题,但对于一般用途,我认为您不会注意到 java 和 scala 集合之间的区别。至少我没有注意到 :) 一般来说,我认为人们过早地通过担心这些事情来进行优化(尽管您可能有一个需要优化的完全有效的用例)。

就我个人而言,我更喜欢使用 scala 集合而不是 java 集合,因为它们的 API,而且因为我从来没有遇到过性能问题,所以我从来没有真正研究过 java vs scala 基准。

正如 Rex 所说,如果您担心(或只是想知道),为您的特定用例设置基准会很有用。

于 2012-10-20T01:57:37.303 回答