summaryrefslogtreecommitdiffstats
path: root/doc/plzip.texinfo
diff options
context:
space:
mode:
Diffstat (limited to 'doc/plzip.texinfo')
-rw-r--r--doc/plzip.texinfo49
1 files changed, 36 insertions, 13 deletions
diff --git a/doc/plzip.texinfo b/doc/plzip.texinfo
index 5cae209..8867c7f 100644
--- a/doc/plzip.texinfo
+++ b/doc/plzip.texinfo
@@ -5,8 +5,8 @@
@finalout
@c %**end of header
-@set UPDATED 10 February 2010
-@set VERSION 0.5
+@set UPDATED 20 March 2010
+@set VERSION 0.6
@dircategory Data Compression
@direntry
@@ -34,6 +34,7 @@ This manual is for Plzip (version @value{VERSION}, @value{UPDATED}).
@menu
* Introduction:: Purpose and features of plzip
* Invoking Plzip:: Command line interface
+* Program Design:: Internal structure of plzip
* File Format:: Detailed format of the compressed file
* Problems:: Reporting bugs
* Concept Index:: Index of concepts
@@ -133,8 +134,8 @@ Print the version number of plzip on the standard output and exit.
Set the input data block size in bytes. The input file will be divided
in chunks of this size before compression is performed. Valid values
range from 8KiB to 1GiB. Default value is two times the dictionary size.
-It is a waste of memory to choose a data size smaller than the
-dictionary size.
+Plzip will reduce the dictionary size if it is larger than the chosen
+data size.
@item --stdout
@itemx -c
@@ -159,6 +160,13 @@ Set the match length limit in bytes. Valid values range from 5 to 273.
Larger values usually give better compression ratios but longer
compression times.
+@item --threads=@var{threads}
+@itemx -n @var{threads}
+Set the number of worker threads. Valid values range from 1 to "as many
+as your system can support". If this option is not used, plzip tries to
+detect the number of processors in the system and use it as default
+value.
+
@item --output=@var{file}
@itemx -o @var{file}
When reading from standard input and @samp{--stdout} has not been
@@ -194,15 +202,15 @@ as shown in the table below. Note that @samp{-9} can be much slower than
@multitable {Level} {Dictionary size} {Match length limit}
@item Level @tab Dictionary size @tab Match length limit
-@item -1 @tab 1MiB @tab 10 bytes
-@item -2 @tab 1MiB @tab 12 bytes
-@item -3 @tab 1MiB @tab 17 bytes
-@item -4 @tab 2MiB @tab 26 bytes
-@item -5 @tab 4MiB @tab 44 bytes
-@item -6 @tab 8MiB @tab 80 bytes
-@item -7 @tab 16MiB @tab 108 bytes
-@item -8 @tab 16MiB @tab 163 bytes
-@item -9 @tab 32MiB @tab 273 bytes
+@item -1 @tab 1 MiB @tab 10 bytes
+@item -2 @tab 1.5 MiB @tab 12 bytes
+@item -3 @tab 2 MiB @tab 17 bytes
+@item -4 @tab 3 MiB @tab 26 bytes
+@item -5 @tab 4 MiB @tab 44 bytes
+@item -6 @tab 8 MiB @tab 80 bytes
+@item -7 @tab 16 MiB @tab 108 bytes
+@item -8 @tab 24 MiB @tab 163 bytes
+@item -9 @tab 32 MiB @tab 273 bytes
@end multitable
@item --fast
@@ -230,6 +238,21 @@ Table of SI and binary prefixes (unit multipliers):
@end multitable
+@node Program Design
+@chapter Program Design
+@cindex program design
+
+For each input file, a splitter thread and several worker threads are
+created, acting the main thread as muxer (multiplexer) thread. A "packet
+courier" takes care of data transfers among threads and limits the
+maximum number of data blocks (packets) being processed simultaneously.
+
+The splitter reads data blocks from the input file, and distributes them
+to the workers. The workers (de)compress the blocks received from the
+splitter. The muxer collects processed packets from the workers, and
+writes them to the output file.
+
+
@node File Format
@chapter File Format
@cindex file format