Need Reviewers - corba cygwin build time improvements
Kelly O'Hair
Kelly.Ohair at Sun.COM
Sat Aug 29 22:12:58 UTC 2009
6875240: Reduce Makefile build time by limiting repeated exec's
Webrev is at:
http://cr.openjdk.java.net/~ohair/openjdk7/jdk7-build-cygwin-6875240/webrev/
Summary of Issue:
JDK builds with CYGWIN, especially on Windows 2003 X64 are experiencing
slow build times, when compared to using the MKS Unix toolset.
Indications are that CYGWIN has a slower fork/exec, and access to
the file system can be up to 2X slower from CYGWIN tools.
It is assumed that this is all due to the emulation layer of CYGWIN.
What does this impact:
This does not impact the hotspot or ant-based builds due to their
limited use of CYGWIN utilities and minimal fork/exec's.
So this effort will be directed at the corba and jdk repositories.
Phase One was to see if the corba repository build time could be
improved. Corba build results are as follows (rough timings):
Before Changes After Changes
MKS corba build time: 7mins 5mins
CYGWIN corba build time: 20mins 10mins
Not as good as MKS (http://www.mkssoftware.com/) unix tools,
but much better than before.
(And yes, the corba makefiles may be replaced with an ant script
some day, which should make it build even faster, but this served
as an experiment before tackling the larger jdk repository)
Summary of the changes:
* Clear out .SUFFIXES. to reduce default rule searches
* Rely on $(CURDIR) defined by GNU make
* Use 'make -C dir' instead of $(CD) $@; $(MAKE)
* 'export' make variables that would normally be re-defined in
sub-makes, this adds more variables to the environment of the
sub-makes but prevents some fork/exec's from happening.
* Removed the TIMING logic and some of the echos in the Makefile
SUBDIRS looping (we could use MAKE="time $(MAKE)" instead).
* Replace use of the find command with the GNU make wildcard function.
* Get rid of unnecessary fork/exec's, merge command lines where possible.
-kto
More information about the build-dev
mailing list