From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by yquem.inria.fr (Postfix) with ESMTP id 34B34BB84 for ; Tue, 9 May 2006 00:24:07 +0200 (CEST) Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by concorde.inria.fr (8.13.0/8.13.0) with ESMTP id k48MO6b8021819 for ; Tue, 9 May 2006 00:24:06 +0200 Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id AAA18353 for ; Tue, 9 May 2006 00:24:05 +0200 (MET DST) Received: from out1.smtp.messagingengine.com (out1.smtp.messagingengine.com [66.111.4.25]) by nez-perce.inria.fr (8.13.0/8.13.0) with ESMTP id k48MO4Q9014151 for ; Tue, 9 May 2006 00:24:04 +0200 Received: from frontend3.internal (frontend3.internal [10.202.2.152]) by frontend1.messagingengine.com (Postfix) with ESMTP id 9D46AD5B4B5; Mon, 8 May 2006 18:24:02 -0400 (EDT) Received: from heartbeat1.messagingengine.com ([10.202.2.160]) by frontend3.internal (MEProxy); Mon, 08 May 2006 18:24:03 -0400 X-Sasl-enc: osjA6Hx/pzRLbTUGxrYqJDu8aDKTqEMYUzsTau+XTmqA 1147127043 Received: from munge (burnham.ljcrf.edu [192.231.106.2]) by mail.messagingengine.com (Postfix) with ESMTP id BC4655AA5; Mon, 8 May 2006 18:24:02 -0400 (EDT) Date: Mon, 8 May 2006 15:23:56 -0700 (PDT) From: Martin Jambon X-X-Sender: martin@munge To: artboreb@netscape.net Cc: caml-list@inria.fr Subject: Re: [Caml-list] What kind of sort do Array.sort ? In-Reply-To: <8C840FDE0706B00-1A64-90ED@mblkn-m05.sysops.aol.com> Message-ID: References: <8C840FDE0706B00-1A64-90ED@mblkn-m05.sysops.aol.com> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Miltered: at concorde with ID 445FC506.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Miltered: at nez-perce with ID 445FC504.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Spam: no; 0.00; toying:01 compiler:01 ocaml:01 emits:01 ocaml:01 timings:01 ocamlopt:01 -unsafe:01 unix:01 cmxa:01 gcc:01 usr:01 usr:01 lib:01 argv:01 X-Spam-Checker-Version: SpamAssassin 3.0.3 (2005-04-27) on yquem.inria.fr X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled version=3.0.3 You can try Array.fast_sort instead of Array.sort (see the docs). Also, check that the time is actually spent sorting the array, not generating random numbers. Martin On Mon, 8 May 2006, artboreb@netscape.net wrote: > Dear Calmers, > Toying with a compiler (builded in Ocaml of course) of a language I developed > which emits C code > I've written some bemchmarks to test it. For my surprise the same program > written in Ocaml lasts > almost 6 times. It's about sorting an integer array, the timings are: > > Ocaml (ocamlopt -unsafe unix.cmxa qc.ml -o qc) > real 1m10.727s > user 1m9.074s > sys 0m0.001s > > Mine (gcc -I /usr/local/include -O3 -s x12.ao.c -o x12 > /usr/local/lib/libgc.a -lpthread) > real 0m18.536s > user 0m18.018s > sys 0m0.002s > > times to take sorting 1000000 an array of 100 random ints > the Ocaml code is > > open Format > > let _ = > if Array.length Sys.argv = 2 then > begin > Random.init (Unix.getpid ()); > let a = Array.make (int_of_string Sys.argv.(1)) 0 in > for i = 0 to 1000000 do > for j = 0 to Array.length a - 1 do a.(j) <- Random.bits () done; > Array.sort (fun x y -> if x > y then 1 else if x = y then 0 else -1) > a > done; > for i = 0 to 99 do printf "%010d\n" a.(i) done > end > > I dont attach the C code emitted because is about 280 lines long, > my language (for the courious) > > "ao.ao" INC > > [Array Int Int] # RAPIDO RECURSIVO > [(a l r) l r a l -> (hl hr p) > [l r] [l r >=] [l] > [ [r] [a r -> p >= l r < & !] [r] [r 1 -] TREC (r) > l l r =/= [a a r -> l <<- 1 +] IFTE (l) > [l] [a l -> p <= l r < & !] [l] [l 1 +] TREC (l) l > r l r =/= [a a l -> r <<- 1 -] IFTE] TREC (l) > a p l <- hl l < [hl l 1 - Qsort] IFTE hr l > [l 1 + hr Qsort] IFTE > ] Qsort FUN > > ARGC 2 = > [ Getpid Srand [;Int] ARGV 1 -> Atoi MAKE Length 1 - (a n) > [[(i) a Rand i <<-] 0 n Upto a 0 n Qsort X-] 1000000 Times > a [?n] Fold > #[] [Rand "%010d" FMT] Rnd_strnum FUN > ] IFTE > > Best regards, > > Arturo Borquez > ___________________________________________________ > Try the New Netscape Mail Today! > Virtually Spam-Free | More Storage | Import Your Contact List > http://mail.netscape.com > > _______________________________________________ > Caml-list mailing list. Subscription management: > http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list > Archives: http://caml.inria.fr > Beginner's list: http://groups.yahoo.com/group/ocaml_beginners > Bug reports: http://caml.inria.fr/bin/caml-bugs > -- Martin Jambon, PhD http://martin.jambon.free.fr Edit http://wikiomics.org, bioinformatics wiki