【发布时间】:2011-01-17 01:21:45
【问题描述】:
我正在尝试 c 与 ocaml 的基本微基准比较。我听说对于斐波那契程序,c 和 ocaml 大致相同,但我无法复制这些结果。我用 gcc -O3 fib.c -o c-code 编译 c 代码,用 ocamlopt -o ocaml-code fibo.ml 编译 OCaml 代码。我使用时间 ./c-code 和 time ./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;
}
OCaml
let rec fibonacci n = if n < 3 then 1 else fibonacci(n-1) + fibonacci(n-2);;
print_int(fibonacci 34);;
【问题讨论】:
-
你看过this very similar question 吗?它包括 ocaml 的详细基准测试结果,以及测试代码的链接。
-
是的,我已经看过了。我运行了大约 0.05 秒的 C 代码,而 ocaml 代码是 0.15 秒。
标签: c benchmarking ocaml