caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Romain Bardou <romain.bardou@inria.fr>
To: Fabrice Le Fessant <Fabrice.Le_fessant@inria.fr>
Cc: "caml-list@inria.fr" <caml-list@inria.fr>
Subject: Re: [Caml-list] Accelerating compilation
Date: Mon, 09 Sep 2013 09:44:19 +0200	[thread overview]
Message-ID: <522D7C53.2040200@inria.fr> (raw)
In-Reply-To: <CAHvkLrOVL5A4J7ajYsJfqZ44FUYWE-oewAYuxOpo+0LeZ9tY5w@mail.gmail.com>

Le 06/09/2013 22:51, Fabrice Le Fessant a écrit :
> On Fri, Sep 6, 2013 at 5:20 PM, Romain Bardou <romain.bardou@inria.fr> wrote:
>>>> 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.
>>>
>>> I'm not sure what you are referring to, OCamlBuild does already
>>> support parallel builds.
>>
>> Does it? I actually thought the -j option was ignored.
>>
>> I just did a quick test and I gain about 5 seconds with -j on a 1min15
>> build (I had cleaned, recompiled and recleaned before so that caching by
>> the file system would not impact the result too much), so it does seem
>> to be a *little* faster :)
> 
> FWIW, I recently compiled Merlin with both ocamlbuild and ocp-build,
> on a quad-core with "-j 10" for both (the link to the ocp-build
> description file is in the latest OCamlPro's report), ocamlbuild needs
> 13s where ocp-build only needs 4s to compile everything.
> 
> As Xavier suggested, I think the main problem is that ocamlbuild must
> discover the files to compile dynamically, starting from the last
> module, so it cannot parallelize much. On the contrary, ocp-build has
> the list of files in the description of the project, so for example,
> it can call ocamldep on all of them almost at the same time.
> 
> ocp-build has an option to choose between digest and (timestamp +
> inode), the default. When I benchmarked the two modes, I could notice
> a small difference, but not more then 5%, so the digests are unlikely
> to be responsible for the problem.
> 
> Finally, another optimization that could be considered for ocamlbuild
> is to call camlp4 only once per file, and then call ocamldep, ocamlc
> and ocamlopt on the preprocessed file. I could notice a huge
> difference on Core, for example, when this optimization was
> implemented first in ocp-build (about a 50% speed-up, if I remember
> well).

I was hoping to hear from ocp-build :) Interesting observations here. I
would have thought the digests would make more of a difference. Good to
know!

Cheers,

-- 
Romain Bardou

  reply	other threads:[~2013-09-09  7:44 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 [this message]
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
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=522D7C53.2040200@inria.fr \
    --to=romain.bardou@inria.fr \
    --cc=Fabrice.Le_fessant@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;
as well as URLs for NNTP newsgroup(s).