harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Salikh Zakirov <salikh.zaki...@gmail.com>
Subject Re: [drlvm][PATCH/RFC] GNU Make-based build system for DRLVM
Date Wed, 01 Aug 2007 08:07:23 GMT
On Wed, Aug 01, 2007 at 11:11:11AM +0400, Alexei Fedotov wrote:
> This is very interesting. How much time it takes to build the whole
> DRLVM from scratch using your script compared to 5 minutes using the
> old one?

I do not have a precise measurements at hand, and would like to warn
straight away, that fair comparison is hardly possible, as Makefiles
only build native components of DRLVM (i.e. omitting java and external
dependencies like APR).

Having said that, I remember that on my machine (Linux ia32 Core Duo 1.6GHz)
it built the machine from scratch in 3:20 in parallel mode 'make -j2' 
(specifying -j3 or -j5 did not have any significant effect either way),
and about 7 minutes in regular mode.

(on laptop with Linux ia32, Core Duo 1.6GHz)

    make -j2: 2m 51s
    make:     5m 33s
    ant: 	  6m 50s
    (manually removing just lnx_ia32_gcc_debug/semis/vm to approximate the
    amount of work, everything else is already built)

(all times measured with 'time')

The ant time has about 50 sec overhead, which is demonstratable on
nothing-to-do run, which is about 3 sec with make and 51 sec with ant.
Another 10 seconds are the java startup overhead, as ant itself reported
6m 41s, but I do not know where the other ~15 s of overhead come from.

Running the nothing-to-do case once more, I've got following resutls.

    ant nothing-to-do: 0m 38s (best), 0m 53s (typical)
    make nothing-do-do: 0m 3s

For some reason, ant always relinks the components, even if no files
were recompiled. Probably the "best" time was reached without relinking.

It's strange to see non-parallel make outperform ant.
I'm sure Ant build will be faster on a windows machines where the overhead
of starting compiler individually for each source file is much more

It's possible to do a batch compilation for an initial build
from make too, using a little magic with $(wildcard) to check whether
the object file already exist -- as if it does not exist, the file is
definitely going to be compiled, and so can be added to the list of
batch-compiled files. However, this does not look like a problem on Linux,
and besides, make batch compilation parallelizable may be somewhat tricky.

View raw message