关于ocaml性能的测试(三)

这个是改进后的递归求fibonacci数列第n项的算法

let fib_next = function
(*     x->[|x.(1);x.(0)+x.(1)|];;  *)
    [|a;b|]->[|b;a+b|]
  | _->raise( Invalid_argument "fib_next");;

let rec fib= function
    1->[|0;1|]
  | n->fib_next( fib (n-1) );;

let _= 
  Printf.printf "%d\n" (fib 44).(1);
  exit 0

测试就不必了,因为一闪而过,所花时间的数量级太低,无法比较。
所以说,只要编译器做好优化,用单层递归写的程序,和用单层循环写的程序,效率相差不是很大。

此博客中的热门博文

少写代码,多读别人写的代码

在windows下使用llvm+clang

tensorflow distributed runtime初窥