Some benchmarks for NuLib:

Uncompressing Moria GS (from 320K to 577K, ShrinkIt Type I LZW):

Program Run / Machine Used			Run Time	CPU Time
----------------------------------------------  --------------  --------------
NuLib v2.1 (APW C), running on a //gs		12 min
ShrinkIt v3.0.1, running on a //gs (HD)		2 min 03 sec
ShrinkIt v3.0.1, running on a //gs (RAM disk)	1 min 21 sec
GS/ShrinkIt v1.0d3 (HD)				<failed>
NuLib v2.2 on a lightly loaded VAX 11/750	1 min 33 sec	1 min 28.4 sec
NuLib v2.2 on a lightly loaded VAX 11/785	38 sec		34.0 sec
NuLib v2.2 on a lightly loaded Sun 3/50		17 sec		13.0 sec
NuLib v2.2 on an empty Apollo workstation	12 sec		11.5 sec
NuLib v2.2 on an empty DEC 3100			9 sec		2.6 sec
NuLib v2.2 on an empty Sun 4			7 sec		2.2 sec

"Run Time" is total time from start to finish.  "CPU Time" is CPU time
actually used under a multiprogrammed OS (in this case, UNIX).

The hard drive (HD) used on the //gs is an AI InnerDrive 20.  The results
obtained from running on a RAM disk could almost be considered the CPU
time, but I've decided to keep them separate.

Doing an uncompressed extract can produce remarkable results... like
running to completion in less than one second on the Apollo (local disk).

Interestingly enough, 16-bit UNIX uncompress works faster than NuLib does.
The reason for this is that the compression code in NuLib actually makes
two passes, one to undo the LZW compression, and the other to undo
non-repeat compression.  Was it worth it do to both kinds?  For Moria it
was; even though "uncompress" ran faster, ShrinkIt's 12-bit LZW packed
the file smaller than compress's 16-bit LZW.

**********

Raw data for benchmarks

Times on the //gs were from start to finish of compression, timed with a
stop watch.

All tests were performed in verbose mode (i.e., the filename was printed
as the file was extracted, etc).  This is how I would expect it to be
run under "normal" conditions.  It does add to the overhead, which
you can pull out by looking at the data below.

/bin/csh time format appears to be (the man page is most unhelpful):
user_time system_time real_time  cpu% ??+??k ??+??io  page_faults+??w

user_time is the time actually spent grinding along.  This is what appears
  in the "CPU time" column.
system_time is for I/O (disk accesses, writing to terminal).
real_time is how long a stopwatch would show (user_time + system_time +
  overhead starting/stopping NuLib + time spent running other processes
  on a multiprogrammed OS like UNIX).  This appears in the "Run Time" col.
cpu% appears to be some kind of estimate of how much time was spent doing
  useful work.
If you don't know what a page fault is, don't worry about it.

Both cory and holden used the same copy of NuLib (not the *same* copy,
but they're identical), so any differences in speed can be attributed
to the processor.

***** holden.berkeley.edu, a VAX 11/750 *****
Script started on Sun Mar 25 11:52:52 1990
--- reading aliases...done
holden 1 c184-cz% ls -s tmp/nulib
  68 tmp/nulib*
holden 2 c184-cz% uptime
 11:52am  up 26 days,  3:59,  4 users,  load average: 0.31, 0.17, 0.13
holden 3 c184-cz% time tmp/nulib xv moria.shk
Extracting 'MORIA' (data)...unshrinking (I)...-\|/-done.
88.4u 3.3s 1:33 98% 83+252k 49+89io 9pf+0w
holden 4 c184-cz% exit
holden 5 c184-cz% 
script done on Sun Mar 25 11:55:34 1990

***** cory.berkeley.edu, a VAX 11/785 *****
Script started on Sun Mar 25 11:50:07 1990
--- reading aliases...done
cory 1 foo% ls -s ../bin/nulib
  68 ../bin/nulib*
cory 2 foo% uptime
 11:50am  up 2 days,  2:04,  6 users,  load average: 0.55, 0.39, 0.27
cory 3 foo% time nulib xv moria.shk
Extracting 'MORIA' (data)...unshrinking (I)...-\|/-done.
34.0u 1.6s 0:37 95% 51+244k 46+82io 5pf+0w
cory 4 foo% exit
cory 5 foo% 
script done on Sun Mar 25 11:51:29 1990

***** a Sun 3/50 *****
Script started on Sat Apr 21 17:00:43 1990
ux1:nulib% ls -s nulib
  64 nulib*
ux1:nulib% uptime
  5:01pm  up 2 days, 10:06,  6 users,  load average: 1.84, 1.66, 1.51
ux1:nulib% time nulib xv moria.shk
Extracting 'MORIA' (data)...unshrinking (I)...-\|/-done.
13.0u 0.6s 0:17 76% 0+168k 1+78io 0pf+0w
ux1:nulib% exit
ux1:nulib% 
script done on Sat Apr 21 17:02:33 1990

***** avalanche.berkeley.edu, an Apollo DN3500 *****
Script started Sat Apr 21 17:04:53 1990
--- reading aliases...done
avalanche 1 nulib% ls -s nulib
  85 nulib*
avalanche 2 nulib% uptime
  5:05pm  up 1 day,  1:50,  3 users,  load average: 0.06, 0.16, 0.00
avalanche 3 nulib% time nulib xv ../dwn/moria.shk
Extracting 'MORIA' (data)...unshrinking (I)...-\|/-done.
11.5u 2.6s 0:16 86% 0+0k 577+0io 0pf+0w
avalanche 6 nulib% exit
avalanche 7 nulib% 
Script done Sat Apr 21 17:06:59 1990

***** a DEC 3100 *****
Script started on Sat Apr 21 16:18:10 1990
vampire:nulib% ls -s nulib
  88 nulib*
vampire:nulib% uptime
  4:18pm  up 30 days, 5 hrs,  2 users,  load average: 0.57, 0.25, 0.00
vampire:nulib% time nulib xv moria.shk
Extracting 'MORIA' (data)...unshrinking (I)...-\|/-done.
2.6u 0.5s 0:09 32% 163+404k 71+71io 3pf+0w
vampire:nulib% exit
vampire:nulib% 
script done on Sat Apr 21 16:19:40 1990

***** a Sun 4 *****
Script started on Sat Apr 21 16:23:47 1990
ux5:nulib% ls -s nulib
  64 nulib*
ux5:nulib% uptime
  4:23pm  up 2 days,  8:50,  7 users,  load average: 0.15, 0.24, 0.03
ux5:nulib% time nulib xv moria.shk
Extracting 'MORIA' (data)...unshrinking (I)...-\|/-done.
2.2u 0.2s 0:07 34% 0+368k 0+71io 0pf+0w
ux5:nulib% exit
ux5:nulib% 
script done on Sat Apr 21 16:25:20 1990

