Some (old) 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.0.2 (HD) 1 min 30 sec 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. All versions of NuLib running on UNIX systems used the optimization features of the C compiler. 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. No benchmarks for compress yet. Be patient. ********** 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 (well 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