我正在尝试将c与ocaml进行基本的微基准比较.我听说对于斐波纳契程序,c和ocaml大致相同,但我无法复制这些结果.我用gcc -O3 fib.c -o c-code编译c代码,并用ocamlopt -o ocaml-code fibo.ml编译OCaml代码.我通过使用时间./c-code和时间./ocaml-code计时.每次我这样做OCaml需要0.10秒,而c代码每次约为0.03秒.除了这是一个天真的基准,有没有办法让ocaml更快?谁能看到他们电脑上的时代是什么?
C
#include <stdio.h>
int fibonacci(int n)
{
return n<3 ? 1 : fibonacci(n-1) + fibonacci(n-2);
}
int main(void)
{
printf("%d", fibonacci(34));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
OCaml的
let rec fibonacci n = if n < 3 then 1 else fibonacci(n-1) + fibonacci(n-2);;
print_int(fibonacci 34);;
Run Code Online (Sandbox Code Playgroud)