Re: speed versus C

From: Pascal Brisset (brisset@recherche.enac.fr)
Date: Fri Oct 08 1999 - 08:57:07 MET DST


Date: Fri, 8 Oct 1999 08:57:07 +0200
Message-Id: <199910080657.IAA23936@sepia.recherche.enac.fr>
From: Pascal Brisset <brisset@recherche.enac.fr>
To: caml-list@inria.fr
Subject: Re: speed versus C

Une petit benchmark qui pourrait être à l'avantage de C: crible d'Eratosthène

--8<------------------------------------------
let n = int_of_string Sys.argv.(1) in
let crible = Array.create n true in
for i = 2 to n-1 do
  if crible.(i)
  then begin
    for j = 2 to (n-1)/i do
      crible.(i*j) <- false
    done
  end
done
--8<------------------------------------------

--8<------------------------------------------
main(int argc, char **argv)
{
  int n = atoi(argv[1]);
  int crible[n], i, j;
  for(i=0; i < n; i++) { crible[i] = 1; }
  for(i = 2; i < n; i++) {
    if (crible[i]) {
      for(j = 2; j <= (n-1)/i; j++) {
        crible[i*j] = 0;
      }
    }
  }
}
--8<------------------------------------------

Sur un Pentium 400Mhz sous Linux:

sepia[854]% gcc -O4 premiers.c
sepia[855]% time a.out 2000000
0.860u 0.030s 0:00.91 97.8% 0+0k 0+0io 91pf+0w
sepia[856]% ocamlopt premiers.ml
sepia[857]% time a.out 2000000
0.910u 0.040s 0:00.96 98.9% 0+0k 0+0io 133pf+0w

 Seulement 5% de différence sur des opérations basiques entières, pas de quoi
se priver.
 Pour des benchmarks sophistiqués, méfions-nous; on a trop souvent tendance à
comparer une solution (en C) développée sur plusieurs années par des experts
à une solution (en Caml) écrite sur un coin de table « juste pour voir » ...

--Pascal Brisset



This archive was generated by hypermail 2b29 : Sun Jan 02 2000 - 11:58:26 MET