Мой пример вычисляет fib!!460 за 0.031 сек, т.е всего на две миллисекунды дольше :-)
Усреднил:
def fib(_n : BigInt): List[BigInt] =
{
if (_n ==0 ) {List[BigInt](0);}
else if ( _n == 1 ) {List[BigInt](1,0);}
else {val l = fib(_n-1); List[BigInt](l.head + l.tail.head) ::: l;}
}
var midTm : long = 0L;
for (val i<-1 to 10)
{
val startTm : long = System.currentTimeMillis();
Console.println(fib(460).head);
val endTm : long = System.currentTimeMillis();
Console.println("Total time: "+(endTm - startTm));
midTm = midTm + (endTm-startTm);
}
Console.println("Mid time: "+(midTm/10.0));
Результат:
........
Total time: 6
609297663643530892791951979990217206693894175329255046444641219473596270869815908465388209600595
Total time: 8
Mid time: 18.2
P.S. JIT рулит