Browse thread
Strange performances
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Till Varoquaux <till.varoquaux@g...> |
| Subject: | Re: [Caml-list] Strange performances |
On Jan 18, 2008 2:15 AM, Jacques Garrigue <garrigue@math.nagoya-u.ac.jp> wrote: ... > By the way, on my machine your version doesn't even work in native > code, I only get segfaults. This is allowed behaviour for > out-of-bounds access. Could you please clarify? This seems a little scary to me, I thought segfaults where acceptable only when you used unsafe features (or ran out of stack). Cheers, Till > > Jacques Garrigue > > From: Benjamin Canou <benjamin.canou@gmail.com> > > > Hi, > > > > The code following my message is way faster in bytecode than in native > > code. Is there a good reason for that or is it a bug ? > > Note : It is a (way too, I know) naive implementation of the well known > > string suite 1, 11, 21, 1211, 111221, ... > > > > Benjamin Canou. > > > > === code === > > > > let list_of_string s = > > let rec list_of_string s i = > > try s.[i] :: list_of_string s (succ i) > > with _ -> [] > > in list_of_string s 0 > > > > let rec trans = function > > | '1' :: '1' :: '1' :: tl -> "31" ^ trans tl > > | '1' :: '1' :: tl -> "21" ^ trans tl > > | '1' :: tl -> "11" ^ trans tl > > | '2' :: '2' :: '2' :: tl -> "32" ^ trans tl > > | '2' :: '2' :: tl -> "22" ^ trans tl > > | '2' :: tl -> "12" ^ trans tl > > | '3' :: '3' :: '3' :: tl -> "33" ^ trans tl > > | '3' :: '3' :: tl -> "23" ^ trans tl > > | '3' :: tl -> "13" ^ trans tl > > | [] -> "" > > | _ -> failwith "bad input" > > > > let rec print n s = > > print_endline s ; > > if n > 0 then print (pred n) (trans (list_of_string s)) > > > > let _ = print 30 "1" > > > > === perfs === > > > > benjamin@benjamin-laptop:~/Work/Stuff$ ocamlopt 123.ml -o 123 > > benjamin@benjamin-laptop:~/Work/Stuff$ time ./123 > > [...] > > real 0m5.245s > > user 0m4.944s > > sys 0m0.016s > > benjamin@benjamin-laptop:~/Work/Stuff$ ocamlc 123.ml -o 123 > > benjamin@benjamin-laptop:~/Work/Stuff$ time ./123 > > [...] > > real 0m1.097s > > user 0m0.840s > > sys 0m0.008s > > benjamin@benjamin-laptop:~/Work/Stuff$ ocaml -version > > The Objective Caml toplevel, version 3.09.2 > > _______________________________________________ > 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 > -- http://till-varoquaux.blogspot.com/