所以,我有几个关于scala的问题。
1)在scala中编写一个新项目会更快(在性能方面)还是我应该坚持常规java?我要继承的项目已经用java编写,但它可以大规模并行化。此外,这个项目是出于学术目的,所以我有点担心这不是一个好主意。我知道我必须先由我的主管来管理它,但这只是一个想法。
2)为了确定,我可以在我的计算机上编译我的scala代码并在安装了JVM的集群上执行“二进制文件”(编译的字节代码)?
3)如果我要编译继承的java程序,它应该工作吗?它应该更快吗?
(群集使用SGE)
答案 0 :(得分:6)
这完全取决于您希望将多少工作用于并行化代码(以及算法的并行化程度)。 Scala使它更容易,但它只在JVM上运行,Java可以使用编译器已知的每个线程技巧。因此,如果您想将精力投入到Java中,它将至少与Scala一样快。 (再说一次,如果你像Java一样编写Scala,那么很少有Java会更快,所以基本上它是一个平局。)
是的,只要您提供scala-library.jar
文件(以及任何其他需要的文件,例如,如果您使用Swing,这对于大规模并行化系统来说是一件奇怪的事情)。
编译java字节码几乎从不比在JVM上运行字节码快。 JVM比大多数静态编译器更聪明。
您没有问,但Scala没有内置的Sun Grid Engine支持。例如,您可以使用远程演员设置某些内容,但是您需要做很多工作。
答案 1 :(得分:3)
1)不,你不会获得优越的表现。一旦你克服了学习曲线,你作为程序员的速度会更高,但这似乎不是你的问题。
使用Scala actor& amp;可能更容易并行化。期货或即将推出的2.9并行收藏品。此外,如果代码在泛型上很重要但经常使用盒装基元,那么Scala的特化功能比在Java中手动执行等效功能要容易得多。
另一方面,Akka的演员和期货可以说是优越的,可以在Java中使用得很好,Java自己的并行东西也不错。
2)是的。
3)呃,什么?