ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dominique Devienne" <ddevie...@gmail.com>
Subject RE: which build tool yields fastest incremental builds? GNU make , Jam , Ant or Scons ?
Date Thu, 21 Jul 2005 19:37:43 GMT
> From: hiren patel [mailto:hiren979@yahoo.com]
>       I am working on a very large C++ project (around 12 miliion LOC ,
> generating 450 DLLs and hundereds of source files ) and we building it
> with PVCS merant make.
> Since current full build time is almost 7 hr , we cannot compromise on the
> time to build.
> 
> Do you know that which tool yields fastest incremental builds ?
> 
> As it seems that GNU make is fastest of all but painful  for large
> projects. Jam , Ant and scons all are more sophisticated tools but
> have complains about being slow.
> 
> so anybody knows which one is fastest among Jam,Ant and Scons ?

The speed of Jam, Ant, Scons does *NOT* matter. The 7 hours are spend
*compiling* and *linking* code, and not in the tool that invokes the
compiler and linker.

The only way to speed up a long linear build like yours is to build pieces
in parallel. There are different ways to achieve this, and you already got
several leads about the different tools available to your previous
questions. All tools require the use of several machines to farm out the
parallel jobs.

If you cannot afford to use several machines, then use Ant/CppTasks or SCons
or A-A-P (or else) to do an *incremental* linear build. These 3 claim to
provide reliable incremental builds. I've only verified this for
Ant/CppTasks myself.

It doesn't really matter which one's the fastest IMHO. What matters is that
it works for you, and allows you to build only what really needs building.
You still pay for the full 7 hours build every night or every so often, but
do a 30 min or 2 hours or 4 hours build when something changes, depending on
nothing changed, a few .cpp changed, or a low-level .h changed.

To wet your appetite, here are timing from one build I did with Ant/CppTasks
(on a fast Linux machine):
Full Rebuild:	36 min 17 sec
Incremental#1:	 2 min 43 sec
Incremental#2:	 2 min 07 sec
Incremental#3:	 2 min 06 sec

The incremental builds are do nothing builds, i.e. they traverse all the
directories, and checks all dependencies.

The first inc. build is longer because CppTasks does all the parsing of
.cpp/.h files, and records everything in XML files. The second and third
passes do any the traversal and check timestamps/checksums. All the parsing
of .cpp/.h adds only 40s to the build.

But converting from Make to Ant/CppTasks is not a small deal. It's a lot of
work, and requires intimate knowledge of Ant and CppTasks. You'd be better
of with ccdist and/or ccache on top of GNU Make, which should be too
different from Merant Make.

In any case, you need to start experimenting on a subset of your build...
--DD


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org


Mime
View raw message