Scala的哪些结构可以比Java更有效地使用,以提高执行速度?我不知道这是否可能,但要清除我的怀疑:)
由于
答案 0 :(得分:9)
scala @specialized注释可以生成类的多个版本,并使用特定的基元类型进行微调。你可以用Java编写所有这些,但你可能不想这样做。
答案 1 :(得分:6)
从2.9开始,并行集合库将成为标准发行版的一部分。这将允许在多个核心上极其简单地分配所谓的“令人尴尬的并行”问题。在Java中这样做需要付出更多的努力。
作为一般规则,Scala基准测试的范围从适度慢于Java到稍快一些,具体取决于问题和编码技术。
答案 2 :(得分:6)
要扩展Ross的答案,您可以使用@specialized生成特定版本的集合。例如,在Java中,您通常使用fastutil或Apache Primitives来获取基元集合。 Scala的@specialized将为您生成这些变体并自动隐藏它们:
class MyLinkedList[@specialized T] (args: T*) {
// whatever it does
}
除此之外,actor使编写并发应用程序变得更容易。 2.9中提出的是并行集合,它可以跨集合并行应用高阶函数,从而加速任何你拥有Scala等效Java循环的地方(折叠,foreach等)。有关此问题的详细信息,请参阅this ScalaDays talk。
答案 3 :(得分:2)
我不会猜测最终的性能可能与同等的Java构造有什么不同,但Scala确实closure elimination,这可能会产生可测量的差异,模拟HotSpot技巧。
请继续关注Iulian's thesis即将推出的内容,并提供有关Scala优化主题的更多信息。