Ich versuche einen grundlegenden Mikrobenchmark Vergleich von c mit ocaml. Ich habe gehört, dass für das Fibonacci-Programm c und ocaml ungefähr gleich sind, aber ich kann diese Ergebnisse nicht replizieren. Ich kompiliere den c-Code mit gcc -O3 fib.c -o c-code und kompiliere den OCaml-Code mit ocamlopt -o ocaml-code fibo.ml. Ich Timing mit Zeit ./c-code und Zeit ./ocaml-code. Jedes Mal, wenn ich dies tue, dauert OCaml 0,10 Sekunden, während der c-Code jedes Mal etwa 0,03 Sekunden beträgt. Abgesehen davon, dass dies ein naives Benchmark ist, gibt es eine Möglichkeit, ocaml schneller zu machen? Kann jemand sehen, was die Zeiten auf ihren Computern sind?OCaml MicroBenchmark
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);;
Haben Sie sah [diese sehr ähnliche Frage] (http://stackoverflow.com/questions/4121790/stack-performance-in-programming-languages) Es enthält detaillierte Bench-Ergebnisse für Ocaml und Links zum Test-Code. – huitseeker
Ja, ich habe mir das angesehen. Ich habe den C-Code ausgeführt, der etwa 0,05 Sekunden betrug, während der OCAML-Code 0,15 Sekunden lang war. – LTigger