home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Elysian Archive
/
AmigaElysianArchive.iso
/
compress
/
xpk25usr.lha
/
Docs
/
NUKE.doc
< prev
next >
Wrap
Text File
|
1992-06-06
|
3KB
|
75 lines
NUKE
An LZ77 variant with hyperfast decompression
Version 1.00
Copyright 1992 Urban Dominik Mueller
License/Disclaimer
------------------
This library may be freely distributed with the XPK compression
package, as long as it is kept in its original, complete, and unmodified
form. It may not be distributed by itself or in a commercial package of
any kind without my permission.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE.
Description
-----------
NUKE is an XPK packer sublibrary which implements a highly optimized
form of the popular LZ77 compression algorithm. This is essentially the
same algorithm used in PowerPacker, Imploder and (among other algorithms)
in the LZH/LHA packers.
Most applications of packers mean packing once and unpacking many times.
One example is a PD program that gets distributed around the world, or a
compressed program on the hard disk the needs to be decompressed when loaded.
NUKE tries to be fast at decompression, thus restricts itself from applying
fancy algorithms (Huffman, Ari-coding). In order to achieve reasonable
compression factors anyway, it scans a very long range (more than 24K)
for identical byte sequences and if it finds any, it outputs offset and
length instead of the bytes themselves.
Of course scanning such a long range for duplicates is quite a CPU-intensive
process. I have tried to make it as fast as possible, and with around
35K/sec (A3000) I'd say I've come close to the best that can be done with
this approach. There's a drawback, though. The compression must use large
hashing tables to reach this speed. I've made sure that NUKE is still
usable on a plain 512K Amiga, but you won't be able to run many things
besides NUKE while you're packing. There is, by the way, no increase in
mem needs with increasing file size.
Following is a table briefly listing some comparative statistics for
NUKE. These were generated by xBench on the standard XPK benchmark system
(A3000/25 with SCRAM, using the AmigaVision executable as data). Note that
memory needs don't include xpkmaster.library's buffers.
Method Packing Unpacking Packing Unpacking Compression
Memory Memory Speed Speed Ratio
------ ------- --------- ------- --------- -----------
NUKE 192K 0K 35 K/s 613 K/s 45.2%
Version History
---------------
1.0 First public release.
Contact Address
---------------
Urban Dominik Mueller
Schulhausstrasse 83
CH-6312 Steinhausen
SWITZERLAND
umueller@amiga.physik.unizh.ch
umueller@iiic.ethz.ch