From: Jon Harrop <jon@jdh30.plus.com>
To: caml-list@yquem.inria.fr
Subject: Re: [Caml-list] Memory allocation nano-benchmark.
Date: Wed, 16 Feb 2005 09:54:13 +0000 [thread overview]
Message-ID: <200502160954.14157.jon@jdh30.plus.com> (raw)
In-Reply-To: <1108541998.669.22.camel@localhost>
On Wednesday 16 February 2005 08:19, Ville-Pertti Keinonen wrote:
> On Tue, 2005-02-15 at 20:51 +0000, Jon Harrop wrote:
> > Indeed, I'm in the "remove -unsafe" camp. Even if OCaml only hoisted
> > bounds checks in the simplest of cases, I think there would be a strong
> > case for removing this option.
>
> As far as I can tell OCaml *never* eliminates or hoists bounds checks
> (or any other repetitive operation), even in the simplest of cases.
In most cases, I'm happy with that as the programmer can hoist invariants
manually. As Xavier has said before, ocamlopt is designed to compile well-
written code. :-)
In the case of bounds checking though, only the compiler can do the hoisting.
Still, the last time I wrote array-based code it was to demonstrate how much
faster tree-based code is. ;-)
> It does explicitly use unsafe operations in the standard library, though.
I was going to say that this is all the more reason to have a full complement
of map/iter/folds in Array and String. Actually, that's not really true as
the cost of polymorphism in most of these functions (except String.iter) will
dwarf the advantage of removing bounds checking.
> ocamlopt doesn't really perform a lot of optimizations. The most
> significant ones (inlining, constant folding/value propagation, direct
> calls) appear to be done in a single pass (asmcomp/closure.ml).
Yes, the performance is astonishingly good considering how elegant the
compiler is. I think it relies entirely on the CPU to do dynamic instruction
rescheduling for some CPUs (not ARM, of course ;-).
--
Dr Jon D Harrop, Flying Frog Consultancy Ltd.
next prev parent reply other threads:[~2005-02-16 9:52 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-02-10 15:15 Christian Szegedy
2005-02-10 14:47 ` [Caml-list] " Frédéric Gava
2005-02-10 15:19 ` skaller
2005-02-10 16:36 ` Frédéric Gava
2005-02-10 17:56 ` Frédéric Gava
2005-02-10 19:56 ` Christian Szegedy
2005-02-10 23:58 ` Frédéric Gava
2005-02-11 9:22 ` Frédéric Gava
2005-02-11 13:04 ` skaller
2005-02-11 13:33 ` skaller
2005-02-11 21:07 ` Oliver Bandel
2005-02-12 0:44 ` skaller
2005-02-15 14:17 ` Frédéric Gava
2005-02-15 19:19 ` Christian Szegedy
2005-02-15 20:51 ` Jon Harrop
2005-02-16 8:19 ` Ville-Pertti Keinonen
2005-02-16 9:54 ` Jon Harrop [this message]
2005-02-16 10:56 ` Ville-Pertti Keinonen
2005-02-11 0:55 ` skaller
2005-02-10 14:56 ` Jon Harrop
2005-02-10 15:32 ` Ville-Pertti Keinonen
2005-02-10 14:59 ` John Prevost
2005-02-10 16:50 ` Marwan Burelle
2005-02-10 19:20 ` Christian Szegedy
2005-02-10 19:40 ` Jon Harrop
2005-02-11 11:26 ` Oliver Bandel
2005-02-12 13:42 ` Christian Szegedy
2005-02-11 1:04 ` skaller
2005-02-11 11:28 ` Oliver Bandel
2005-02-12 0:01 ` Guillaume
2005-02-12 0:36 ` skaller
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=200502160954.14157.jon@jdh30.plus.com \
--to=jon@jdh30.plus.com \
--cc=caml-list@yquem.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