J'ai fait le bench avec OCaml, et le code natif est plus rapide que le C compilé avec gcc sans optimisations, par contre il y a un facteur deux en faveur du C avec -O3.
let entries = 10000
let loop entries =
let d = Array.make entries 1 in
for i = 2 to pred (entries / 2) do
let j = ref (2 * i) in
while !j < entries do
d.(!j) <- d.(!j) + i;
j := !j + i
done
done;
for i = 0 to entries - 1 do
if d.(i) < entries && d.(d.(i)) = i && i <= d.(i) then
Printf.printf "%i %i\n" i d.(i)
done
let () = for i = 0 to 100 do loop entries done
Par contre c'est clairement pas une manière fonctionnelle d'écrire les choses, et habituellement, je n'utilise jamais les boucles for et while en OCaml.
[^] # Re: Un bench vaut ce qu'il vaut
Posté par Perthmâd . En réponse au journal Javascript plus rapide que python ! (une suite possible). Évalué à 3.
let entries = 10000
let loop entries =
let d = Array.make entries 1 in
for i = 2 to pred (entries / 2) do
let j = ref (2 * i) in
while !j < entries do
d.(!j) <- d.(!j) + i;
j := !j + i
done
done;
for i = 0 to entries - 1 do
if d.(i) < entries && d.(d.(i)) = i && i <= d.(i) then
Printf.printf "%i %i\n" i d.(i)
done
let () = for i = 0 to 100 do loop entries done
Par contre c'est clairement pas une manière fonctionnelle d'écrire les choses, et habituellement, je n'utilise jamais les boucles for et while en OCaml.