Recursive make speedup patch
Kris Kennaway
kris at obsecurity.org
Sun Jan 25 16:08:20 PST 2004
The patch available at
http://people.freebsd.org/~kris/recursive-speedup.patch
gives a 43% speedup for 'make index' in my testing:
No optimization
1899.40 real 648.67 user 1148.96 sys
Optimized version
1096.76 real 504.48 user 565.90 sys
The optimizations I used were:
* Don't unconditionally include <bsd.gnome.mk> twice for every port;
only do so if the port defines USE_GNOME or WANT_GNOME. I had to
modify a couple of ports to make this work, and I'm not 100% certain
there are no unintended side-effects.
* Pass down some more variables from bsd.port.subdir.mk instead of
assigning them by forking a shell to evaluate a command in each child
makefile.
* Don't invoke perl just to print a string in 'make describe'
* Use make transformation magic instead of invoking 'basename' in a
shell.
There are some more things that could be looked at, but they're more
difficult and the benefits are unknown:
* A lot of the variable assignments in bsd.port.mk (e.g. CONFIGURE
stuff) are not necessary for recursive targets like 'make describe'.
They could be hidden behind a conditional and avoided unless we're
actually doing a port build. I'm not sure how expensive these are
though, so it may not be worth it.
* I tried using make -jX to build the INDEX in parallel, but I ended
up with overlapping output from the child makes and a corrupted INDEX.
There should be some way to make it work.
* 'make index' and 'make describe' use some perl code, which might be
optimized or rewritten (e.g. replaced by an awk script, which would
have the further benefit of working out of the box on 5.x).
I have not yet tried a port build with these patches - I'd be most
concerned about the bsd.gnome.mk inclusion change. Please let me know
if you run into any problems.
Kris
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-ports/attachments/20040125/68a92bbd/attachment.bin
More information about the freebsd-ports
mailing list