home *** CD-ROM | disk | FTP | other *** search
- IMPL
- A LZ77 variant supporting various compression modes
- Version 1.00
- Copyright 1992 Peter Struijk
-
-
-
- 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
- -----------
-
- This XPK sub-library uses basically the same algorithm as found in the
- Imploder, but without the specifics needed for compressing self-contained
- executables.
-
- A quote from the Imploder 4.0 technical manual says it all :-)
-
- IMPL does LZ77 like compression with a, per mode, static Huffman like coding
- step on the various parts of the skip, offset and length tuples. Due to the
- efficient encoding, a tuple can require less than 12 bits, and thus strings of
- 2 bytes length and up are encodable with a decent gain (given small Huffman
- patterns corresponding to likely circumstances).
-
-
- Following is a table, listing some comparative statistics for executables,
- for all compression modes, using a xpk chunk size of 64K. These were
- generated by xBench on the standard XPK benchmark system (A3000/25 with SCRAM,
- using the AmigaVision executable as data). Note that memory requirements do
- not include xpkmaster.library's buffers. The 2nd number indicates the memory
- needed using the non-turbo mode, which automatically kicks in if there's
- insufficient memory available. Thanks to Urban Dominik Mueller for providing
- this information.
-
-
- Method Mode Packing Unpacking Packing Unpacking Compression Description
- Memory Memory Speed Speed Ratio
- ------ ------- ------- --------- ------- --------- ----------- -----------
- IMPL 0..10 300K/0K 0K 29 K/s 360 K/s 34.8% 0.10*max
- IMPL 11..30 350K/0K 0K 27 K/s 332 K/s 39.8% 0.30*max
- IMPL 31..50 400K/0K 0K 20 K/s 314 K/s 43.3% 0.50*max
- IMPL 51..75 425K/0K 0K 14 K/s 300 K/s 44.0% 0.75*max
- IMPL 76..98 450K/0K 0K 8 K/s 292 K/s 44.2% 1.00*max
- IMPL 99..100 450K/0K 0K 6 K/s 291 K/s 44.3% adaptive
-
-
- The default compression mode is 100 which means that the actual
- compression mode used depends on the chunksize. The default chunksize is 64K.
- In general, this mode produces the best compression ratio, although the mode
- range 76..98 (1.00*max) will sometimes produce better results.
-
- What does this 1.00*max description mean? First the maximum allowable
- compression mode, for a particular chunksize, is computed. Then this maximum
- mode is scaled down by a factor depending on the chosen compression mode
- (<99). The above table is valid only when using the default chunksize. If a
- program uses a smaller chunksize the compression speeds will go up, if it uses
- a larger chunksize compression ratios will improve somewhat.
-
- The current version of xpkIMPL.library will, by default, react to a BREAK
- signal (CTRL-C) while compressing. Compressing a chunk (especially on
- unaccelerated amiga's) can take quite a bit time, so allowing the user to
- break-off compression is useful. For now, it's not possible to turn this
- feature off!
-
- Goodluck,
- Peter.
-
-
- Version History
- ---------------
-
- 0.01 Well known Imploder compression algorithm now included in a xpk sublibrary.
- 0.19 Improved robustness. Released with xpk 2.4.
- 1.00 Much needed documentation added. ;-) Released with xpk 2.5.
-
-
-
- Contact Address
- ---------------
-
- Peter Struijk
- Veulenkamp 28
- 2623 XD DELFT
- The Netherlands
-
- winfjmf@dutiws.twi.tudelft.nl
-