From: artboreb@netscape.net
To: caml-list@inria.fr
Subject: What kind of sort do Array.sort ?
Date: Mon, 08 May 2006 17:31:18 -0400 [thread overview]
Message-ID: <8C840FDE0706B00-1A64-90ED@mblkn-m05.sysops.aol.com> (raw)
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
next reply other threads:[~2006-05-08 21:31 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-05-08 21:31 artboreb [this message]
2006-05-08 22:23 ` [Caml-list] " Martin Jambon
2006-05-08 23:52 ` artboreb
2006-05-09 0:22 ` Erick Tryzelaar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=8C840FDE0706B00-1A64-90ED@mblkn-m05.sysops.aol.com \
--to=artboreb@netscape.net \
--cc=caml-list@inria.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).