关于Java和Scala以及并行化的问题

时间:2011-04-11 01:01:56

标签: java scala cluster-computing

所以,我有几个关于scala的问题。

1)在scala中编写一个新项目会更快(在性能方面)还是我应该坚持常规java?我要继承的项目已经用java编写,但它可以大规模并行化。此外,这个项目是出于学术目的,所以我有点担心这不是一个好主意。我知道我必须先由我的主管来管理它,但这只是一个想法。

2)为了确定,我可以在我的计算机上编译我的scala代码并在安装了JVM的集群上执行“二进制文件”(编译的字节代码)?

3)如果我要编译继承的java程序,它应该工作吗?它应该更快吗?

(群集使用SGE)

2 个答案:

答案 0 :(得分:6)

  1. 这完全取决于您希望将多少工作用于并行化代码(以及算法的并行化程度)。 Scala使它更容易,但它只在JVM上运行,Java可以使用编译器已知的每个线程技巧。因此,如果您想将精力投入到Java中,它将至少与Scala一样快。 (再说一次,如果你像Java一样编写Scala,那么很少有Java会更快,所以基本上它是一个平局。)

  2. 是的,只要您提供scala-library.jar文件(以及任何其他需要的文件,例如,如果您使用Swing,这对于大规模并行化系统来说是一件奇怪的事情)。

  3. 编译java字节码几乎从不比在JVM上运行字节码快。 JVM比大多数静态编译器更聪明。

  4. 您没有问,但Scala没有内置的Sun Grid Engine支持。例如,您可以使用远程演员设置某些内容,但是您需要做很多工作。

答案 1 :(得分:3)

1)不,你不会获得优越的表现。一旦你克服了学习曲线,你作为程序员的速度会更高,但这似乎不是你的问题。

使用Scala actor& amp;可能更容易并行化。期货或即将推出的2.9并行收藏品。此外,如果代码在泛型上很重要但经常使用盒装基元,那么Scala的特化功能比在Java中手动执行等效功能要容易得多。

另一方面,Akka的演员和期货可以说是优越的,可以在Java中使用得很好,Java自己的并行东西也不错。

2)是的。

3)呃,什么?