Mailing list for all users of the OCaml language and system.
 help / color / mirror / Atom feed
From: Xavier Leroy <Xavier.Leroy@inria.fr>
To: caml-list@inria.fr
Subject: Re: [Caml-list] Accelerating compilation
Date: Fri, 06 Sep 2013 18:30:46 +0200	[thread overview]
Message-ID: <522A0336.7030203@inria.fr> (raw)
In-Reply-To: <5229DEF9.7040706@inria.fr>

On 06/09/13 15:56, Romain Bardou wrote:

> 1) Separate typing and code generation, in ocamlc and in ocamlopt
> For instance, provide an option -typing-only which would mean "only
> produce the .cmi but do not produce the .cmo or the .cmx". 

I strongly suspect that bytecode generation takes much less time than
parsing and typechecking, so you wouldn't gain much compared to simply
compiling to bytecode.

Some obvious recommendations:

- Make sure the .opt compilers (ocamlc.opt, ocamlopt.opt) are
  installed.  They are significantly faster than their non-.opt
  counterparts, and some Linux distros package the .opt compilers
  separately and don't install them by default.

- Put your project on a fast disk, ideally a SSD.  ocamlc can be I/O
  bound sometimes.  The only times where I observe somewhat slow
  compilations is when I work in an NFS partition mounted from our
  super-reliable-but-rather-slow NAS.

> 2) Be able to disable Ocamlbuild's digest mechanism and use dates and
> file sizes instead
> 
> If I am not mistaken, this is one of the main reasons why Ocamlbuild is
> slower that make.

It's one possible reason among others, e.g. that ocamlbuild runs
ocamldep very often.  Again, some profiling would help understanding
the bottleneck(s).  But this is a reasonable suggestion.

> 3) Parallel compilation in Ocamlbuild
> Of course it would help but it is not easy to implement so I'm just
> putting it there to be exhaustive.

As others said, ocamlbuild has some support for parallelism, but
it's much less effective than "make -j".  One reason could be that
ocamlbuild discovers dependencies as it goes, so it's doing online
scheduling, in contrast with make's offline scheduling.  But within
the online scheduling approach, there is certainly room for
improvement.  Suggestions and patches welcome.

- Xavier Leroy

  parent reply	other threads:[~2013-09-06 16:30 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-06 13:56 Romain Bardou
2013-09-06 14:55 ` Markus Mottl
2013-09-06 15:19   ` Romain Bardou
2013-09-06 15:27     ` Gabriel Scherer
2013-09-06 15:33       ` Alain Frisch
2013-09-06 20:51     ` Fabrice Le Fessant
2013-09-09  7:44       ` Romain Bardou
2013-09-11 13:00       ` Francois Berenger
2013-09-11 13:46         ` Wojciech Meyer
2013-09-12  1:23           ` Francois Berenger
2013-09-12 15:15             ` Jacques Le Normand
2013-09-30  8:06       ` [Caml-list] from oasis to obuild (original subject was Re: Accelerating compilation) Francois Berenger
2013-09-30  8:18         ` Török Edwin
2013-09-30  9:00         ` Fabrice Le Fessant
2013-09-30  9:13           ` Anil Madhavapeddy
2013-09-30 11:13             ` Alain Frisch
2013-09-30 11:19               ` Anil Madhavapeddy
2013-09-30 11:27                 ` Alain Frisch
2013-09-30 11:36                   ` Anil Madhavapeddy
2013-09-30  9:18           ` Francois Berenger
2013-09-30 14:11         ` Sylvain Le Gall
2013-10-01  0:57           ` Francois Berenger
2013-10-01 12:25             ` Sylvain Le Gall
2013-09-07 11:37     ` [Caml-list] Accelerating compilation Matej Kosik
2013-09-08  6:37     ` Francois Berenger
2013-09-06 15:18 ` Gabriel Scherer
2013-09-06 15:28   ` Romain Bardou
2013-09-06 16:04   ` Markus Mottl
2013-09-06 16:30 ` Xavier Leroy [this message]
2013-09-07 19:13   ` Wojciech Meyer
2013-09-07 21:42     ` Jacques-Pascal Deplaix
2013-09-08  1:59       ` Markus Mottl
2013-09-09  7:59   ` Romain Bardou
2013-09-09  8:25   ` Alain Frisch
2013-09-09  8:35     ` Francois Berenger
2013-09-09 10:13     ` Anil Madhavapeddy
2013-09-09 17:08     ` Adrien Nader
2013-09-09 17:17       ` Gabriel Kerneis
2013-09-10  2:01     ` oleg
2013-09-10 10:21       ` Gerd Stolpmann
2013-09-10 16:15       ` Adrien Nader
2013-09-10 16:46       ` Xavier Leroy
2013-09-10 16:53         ` Adrien Nader
2013-09-10 17:43           ` ygrek
2013-09-06 18:45 ` Martin Jambon
2013-09-09  8:15   ` Romain Bardou
2013-09-09  8:36     ` Francois Berenger
2013-09-09  8:41       ` Thomas Refis
2013-09-09 17:32     ` Aleksey Nogin

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=522A0336.7030203@inria.fr \
    --to=xavier.leroy@inria.fr \
    --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