Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 21 May 1996 20:01:42 +0200
From:      Wolfram Schneider <wosch@campa.panke.de>
To:        Bruce Evans <bde@zeta.org.au>
Cc:        hackers@freebsd.org
Subject:   MLINKS (Re: Congrats on CURRENT 5/1 SNAP...)
Message-ID:  <199605211801.UAA04502@campa.panke.de>
In-Reply-To: <199605210808.SAA28887@godzilla.zeta.org.au>
References:  <199605210808.SAA28887@godzilla.zeta.org.au>

next in thread | previous in thread | raw e-mail | index | archive | help
Bruce Evans writes:
>about 8ms to exec a small dynamically linked binary and about 2ms to
>exec a small statically linked binary.  /bin/sh isn't execed all that
>much (because make is smart enough to exec things directly).  However,
>expr and test are execed a lot for the stupid shell scripts for handling
>MLINKS.  It takes about 150 seconds longer than it should to create all
>the links for libraries alone.  About 50 seconds of this is for unnecessary
>exec overhead and the rest is because too many processes are execed and
>sync metadata updates are too slow.

The following patch reduce the time for `cd /usr/src; make maninstall'
from 1120.89 real       514.68 user       366.11 sys
to    985.58 real       500.02 user       287.07 sys

a dirty perl script need
      936.98 real       516.46 user       223.40 sys

and I guess a C-program would need ~885 sec.



Wolfram



--- bsd.man.mk	Wed Apr 10 01:10:19 1996
+++ ../mk3/bsd.man.mk	Tue May 21 15:55:49 1996
@@ -61,20 +61,18 @@
 .endfor
 
 .if defined(MLINKS) && !empty(MLINKS)
-	@set ${MLINKS}; \
-	while test $$# -ge 2; do \
-		name=$$1; \
-		shift; \
-		sect=`expr $$name : '.*\.\([^.]*\)'`; \
-		dir=${DESTDIR}${MANDIR}$$sect; \
-		l=$${dir}${MANSUBDIR}/$$name; \
-		name=$$1; \
-		shift; \
-		sect=`expr $$name : '.*\.\([^.]*\)'`; \
-		dir=${DESTDIR}${MANDIR}$$sect; \
-		t=$${dir}${MANSUBDIR}/$$name; \
+	@set `echo ${MLINKS} " " | sed 's/\.\([^.]*\) /.\1 \1 /g'`; \
+	while : ; do \
+		case $$# in \
+			0) break;; \
+			[123]) echo "warn: empty MLINK: $$1 $$2 $$3"; break;; \
+		esac; \
+		name=$$1; shift; sect=$$1; shift; \
+		l=${DESTDIR}${MANDIR}$${sect}${MANSUBDIR}/$$name; \
+		name=$$1; shift; sect=$$1; shift; \
+		t=${DESTDIR}${MANDIR}$${sect}${MANSUBDIR}/$$name; \
 		${ECHO} $${t}${ZEXT} -\> $${l}${ZEXT}; \
 		rm -f $${t} $${t}${ZEXTENSION}; \
 		ln $${l}${ZEXT} $${t}${ZEXT}; \
-	done; true
+	done
 .endif



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199605211801.UAA04502>