所以Scala应该和Java一样快.我正在重新审视我最初用Java解决的Scala中的一些Project Euler问题.具体问题5:"从1到20的所有数字均可被整除的最小正数是多少?"
这是我的Java解决方案,在我的机器上完成需要0.7秒:
public class P005_evenly_divisible implements Runnable{
final int t = 20;
public void run() {
int i = 10;
while(!isEvenlyDivisible(i, t)){
i += 2;
}
System.out.println(i);
}
boolean isEvenlyDivisible(int a, int b){
for (int i = 2; i <= b; i++) {
if (a % i != 0)
return false;
}
return true;
}
public static void main(String[] args) {
new P005_evenly_divisible().run();
}
}
Run Code Online (Sandbox Code Playgroud)
这是我对Scala的"直接翻译",需要103秒(147倍!)
object P005_JavaStyle {
val t:Int = 20;
def run {
var …Run Code Online (Sandbox Code Playgroud) 在阅读了很多关于FP的并发执行和性能优势的博客和帖子后,我最近开始研究FP.我对FP的需求在很大程度上受到我正在开发的应用程序的影响.我的应用程序是一个基于状态的数据注入到另一个子系统,其中时间非常关键(接近每秒200万个事务).我有几个这样的子系统需要测试.我正在认真考虑使用FP来实现其并行性,并希望采用正确的方法,SO上的许多帖子都谈到了Scala,Haskell和Clojure wrt语言结构,库和JVM支持的缺点和优点.从语言的角度来看,我可以学习任何语言,只要它能帮助我实现结果.
某些帖子支持Haskell进行模式匹配和语言简单,基于JVM的FP lang在使用现有Java库方面具有很大的优势.JaneStreet是OCAML的重要支持者,但我真的不确定OCAML的开发者支持和帮助论坛.
如果有人处理过这么大的数据,请分享您的经验.