9443ed9332
to support multithreading and asyncio on Windows |
||
---|---|---|
.. | ||
.gitignore | ||
bench.c | ||
bench.h | ||
COPYING | ||
lorem.c | ||
lorem.h | ||
lz4-exe.rc.in | ||
lz4.1 | ||
lz4.1.md | ||
lz4cli.c | ||
lz4conf.h | ||
lz4io.c | ||
lz4io.h | ||
Makefile | ||
platform.h | ||
README.md | ||
threadpool.c | ||
threadpool.h | ||
timefn.c | ||
timefn.h | ||
util.c | ||
util.h |
Command Line Interface for LZ4 library
Build
The Command Line Interface (CLI) is generated
using the make
command, no additional parameter required.
The CLI generates and decodes LZ4-compressed frames.
For more control over the build process,
the Makefile
script supports all standard conventions,
including standard targets (all
, install
, clean
, etc.)
and standard variables (CC
, CFLAGS
, CPPFLAGS
, etc.).
The makefile offer several targets for various use cases:
lz4
: default CLI, with a command line syntax similar to gziplz4c
: supports legacy lz4 commands (incompatible with gzip)lz4c32
: Same aslz4c
, but generates a 32-bits executableunlz4
,lz4cat
: symlinks tolz4
, default to decompression andcat
compressed filesman
: generates the man page, fromlz4.1.md
markdown source
C Preprocessor variables
These variables are read by the preprocessor at compilation time, they influence executable behavior, such as default starting values,
and are exposed from programs/lz4conf.h
.
Assignment methods vary depending on environments.
On a typical posix
+ gcc
+ make
setup, they can be defined with CPPFLAGS=-DVARIABLE=value
assignment.
LZ4IO_MULTITHREAD
: enable multithreading supportLZ4_NBTHREADS_DEFAULT
: default nb of threads in multithreading mode. Default is0
, which means "auto-determine" based on local cpu.LZ4_BLOCKSIZEID_DEFAULT
: defaultlz4
block size code. Valid values are [4-7].
Makefile Build variables
HAVE_PTHREAD
: determines presences of<pthread>
support. This is in turn used bymake
to determine multithreading support oflz4
. Detection is automatic, but can be forced to0
or1
if needed.
Aggregation of parameters
The lz4
CLI supports aggregation for short commands. For example, -b1
, -e18
, and -i1
can be joined into -b1e18i1
.
This doesn't work for --long-commands
, which must be separated.
Benchmark in Command Line Interface
CLI includes in-memory compression benchmark module for lz4. The benchmark is conducted using a given filename. The file is read into memory. It makes benchmark more precise as it eliminates I/O overhead.
The benchmark measures ratio, compressed size, compression and decompression speed.
One can select compression levels starting from -b
and ending with -e
.
The -i
parameter selects a number of seconds used for each of tested levels.
Usage of Command Line Interface
The full list of commands can be obtained with -h
or -H
parameter:
Usage :
lz4 [arg] [input] [output]
input : a filename
with no FILE, or when FILE is - or stdin, read standard input
Arguments :
-1 : Fast compression (default)
-9 : High compression
-d : decompression (default for .lz4 extension)
-z : force compression
-D FILE: use FILE as dictionary
-f : overwrite output without prompting
-k : preserve source files(s) (default)
--rm : remove source file(s) after successful de/compression
-h/-H : display help/long help and exit
Advanced arguments :
-V : display Version number and exit
-v : verbose mode
-q : suppress warnings; specify twice to suppress errors too
-c : force write to standard output, even if it is the console
-t : test compressed file integrity
-m : multiple input files (implies automatic output filenames)
-r : operate recursively on directories (sets also -m)
-l : compress using Legacy format (Linux kernel compression)
-B# : cut file into blocks of size # bytes [32+]
or predefined block size [4-7] (default: 7)
-BD : Block dependency (improve compression ratio)
-BX : enable block checksum (default:disabled)
--no-frame-crc : disable stream checksum (default:enabled)
--content-size : compressed frame includes original size (default:not present)
--[no-]sparse : sparse mode (default:enabled on file, disabled on stdout)
--favor-decSpeed: compressed files decompress faster, but are less compressed
--fast[=#]: switch to ultra fast compression level (default: 1)
Benchmark arguments :
-b# : benchmark file(s), using # compression level (default : 1)
-e# : test all compression levels from -bX to # (default : 1)
-i# : minimum evaluation time in seconds (default : 3s)```
License
All files in this directory are licensed under GPL-v2. See COPYING for details. The text of the license is also included at the top of each source file.