Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!mnetor!seismo!mcvax!ukc!icdoc!lmjm
From: lmjm@doc.ic.ac.uk (Lee McLoughlin)
Newsgroups: comp.unix.wizards,comp.text
Subject: Speedup idea for troff/nroff
Message-ID: <387@ivax.doc.ic.ac.uk>
Date: Mon, 5-Jan-87 13:52:32 EST
Article-I.D.: ivax.387
Posted: Mon Jan  5 13:52:32 1987
Date-Received: Mon, 5-Jan-87 22:16:36 EST
Sender: lmjm@doc.ic.ac.uk
Reply-To: lmjm@doc.ic.ac.uk (Lee McLoughlin)
Distribution: comp
Organization: Dept. of Computing, Imperial College, London, UK.
Lines: 20
Xref: mnetor comp.unix.wizards:504 comp.text:143

This is a speedup idea for troff and its relatives that  I do not have
time to investigate but sounds pretty promising.

Most of the local use of troff is with a few standard packages (man,
ms, me).  Would it be possible to use the unexec routine to create a
preloaded version by running troff to read in the macro package
then unexecing itself out?  (Unexec is a routine which creates an
a.out equivalent to the current running program.)  GNU Emacs this 
approach to avoid the overhead of reloading its many lisp scripts.

Given the number of times that troff is run, the time taken to load
ms/me, and the infrequency of changes to these packages this does sound
like a winner.

It would be neatest if on calling troff it detects the use of the
macro package that has been ``wired-in'' in this way and execs the
unexeced version, so the users don't need to know about it.

I've only ever seen the GNU Emacs version of unexec but I but I
believe it was once posted on the net.