tech-pkg archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Optimising scan-libtool
For every invocation of libtool, mk/buildlink3/scan-libtool parses
each argument and runs sed on every argument which matches "-*=*" to
extract the value.
libtool is often called with e.g. "--tag=CC --mode=compile", but the
only option that is handled in scan-libtool is --mode=, so the sed
executions for --tag= are wasted.
As the only option we care about is --mode= and there are a limited
number of possible values it accepts, we don't need sed at all to
extract the optarg - we can just use shell substitution and avoid
having to fork at all.
The diff to fix this is here:
http://us-east.manta.joyent.com/pkgsrc/public/patches/scan-libtool-perf.diff
Comparisons with www/webkit1-gtk (a package with a large number of
libtool calls) at MAKE_JOBS=24 is before:
real 1:06:34.467722830
user 20:36:16.673008595
sys 1:52:04.044213746
and after:
real 1:05:50.050175590
user 20:37:21.798369207
sys 1:33:52.313198236
The real time isn't much different but there is a significant
reduction in system time, thanks to executing 170,447 fewer sed calls
over the build (observed with DTrace).
--
Jonathan Perkin - Joyent, Inc. - www.joyent.com
Home |
Main Index |
Thread Index |
Old Index