caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Ville-Pertti Keinonen <will@exomi.com>
To: Ritesh Kumar <ritesh@cs.unc.edu>
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] Strange observation on polymorphic '<'
Date: Fri, 03 Dec 2004 10:22:46 +0200	[thread overview]
Message-ID: <1102062166.666.25.camel@localhost> (raw)
In-Reply-To: <6FBBD2B0-44FC-11D9-AF66-000A95CDFBE4@cs.unc.edu>

On Fri, 2004-12-03 at 02:24 -0500, Ritesh Kumar wrote:

> let max a b = if a>b then a else b;;
> print_int (max 2 3);;
> ============
> Separate compilation means that the function max should use the C call 
> (for the toplevel module). However, the invocation of max 2 3 shouldn't 
> use a direct call to the function in the same module as the invocation 
> is in the same module (i.e. there is opportunity to optimize it based 

The decision of whether to inline a function is done based on its size.
You can increase the inlining level to allow for larger functions to be
inlined.

However, apparently inlining is currently done after deciding whether to
call the polymorphic function, so it doesn't help in this case, which is
definitely a missed optimization opportunity.

> on the known invocation types). Secondly, does separate compilation 
> make that strong a sense in case of native compilation for OcaML ... 
> most probably not because it anyways generates a standalone executable?

OCaml supports inlining across compilation units, so eliminating
separate compilation probably wouldn't automatically give you any
benefits.

There is at least one compiler for a related language (Standard ML) that
does global analysis by compiling everything at once (MLtoN).  It's
quite a bit more complex compared to OCaml, doesn't generate
significantly faster code for common cases, and supports far fewer
platforms.  MLtoN does have the nice ability to support unboxed,
untagged integers, though.



  reply	other threads:[~2004-12-03  8:23 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-11-30 20:30 Ritesh Kumar
2004-12-01 23:17 ` [Caml-list] " Damien Doligez
2004-12-03  7:24   ` Ritesh Kumar
2004-12-03  8:22     ` Ville-Pertti Keinonen [this message]
2004-12-04 11:05       ` Missing a function Frédéric Gava
2004-12-04 13:25         ` [Caml-list] " sejourne_kevin
2004-12-04 14:13           ` Frédéric Gava
2005-01-29 19:34             ` Radu Grigore
2005-01-29 19:55               ` Radu Grigore
2005-01-29 21:05               ` Olivier Andrieu
2005-02-04 20:18               ` Radu Grigore

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=1102062166.666.25.camel@localhost \
    --to=will@exomi.com \
    --cc=caml-list@inria.fr \
    --cc=ritesh@cs.unc.edu \
    /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).