Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OCaml微基准_C_Benchmarking_Ocaml - Fatal编程技术网

OCaml微基准

OCaml微基准,c,benchmarking,ocaml,C,Benchmarking,Ocaml,我正在尝试c和ocaml的基本微基准比较。我听说对于fibonacci程序,c和ocaml大致相同,但我无法复制这些结果。我使用gcc-O3 fib.c-o c-code编译c代码,并使用ocamlopt-o OCaml代码fibo.ml编译OCaml代码。我使用时间计时。/c代码和时间。/ocaml代码。每次执行此操作时,OCaml需要0.10秒,而c代码每次大约需要0.03秒。除了这是一个幼稚的基准之外,还有什么方法可以让ocaml更快呢?有人能看到他们电脑上的时间吗 C #包括 整数斐波那

我正在尝试c和ocaml的基本微基准比较。我听说对于fibonacci程序,c和ocaml大致相同,但我无法复制这些结果。我使用gcc-O3 fib.c-o c-code编译c代码,并使用ocamlopt-o OCaml代码fibo.ml编译OCaml代码。我使用时间计时。/c代码和时间。/ocaml代码。每次执行此操作时,OCaml需要0.10秒,而c代码每次大约需要0.03秒。除了这是一个幼稚的基准之外,还有什么方法可以让ocaml更快呢?有人能看到他们电脑上的时间吗

C

#包括
整数斐波那契(整数n)
{

return n当使用
gcc-O2
编译时,ML版本已经超过了C版本,我认为这是一项相当不错的工作。查看由
gcc-O3
生成的程序集,它看起来像是在做一些积极的内联和循环展开。为了使代码更快,我认为您必须重写代码,但是您应该关注更高级别的抽象。

我认为这只是ocaml的一个开销,与更大的程序相比,它更相关

您可以使用
-S
选项生成程序集输出,以及
-verbose
查看ocaml如何调用外部应用程序(
gcc
)。此外,使用
-p
选项并通过
gprof
运行应用程序将有助于确定这是来自
ocaml
的开销,还是您可以实际改进的开销

干杯

对于我的电脑,我得到以下信息:

ocaml - 0.035 (std-dev=0.02; 10 trials)  
    c - 0.027 (std-dev=0.03; 10 trials)  

你看过了吗?它包括ocaml的详细测试结果,以及测试代码的链接。是的,我看过了。我运行的C代码大约是.05秒,而ocaml代码是.15秒。
let rec fibonacci n = if n < 3 then 1 else fibonacci(n-1) + fibonacci(n-2);;
print_int(fibonacci 34);;
ocaml - 0.035 (std-dev=0.02; 10 trials)  
    c - 0.027 (std-dev=0.03; 10 trials)