Compress::LZF - extremely light-weight Lempel-Ziv-Free compression |
Compress::LZF - extremely light-weight Lempel-Ziv-Free compression
# import compress/decompress functions use Compress::LZF; # the same as above use Compress::LZF ':compress';
$compressed = compress $uncompressed_data; $original_data = decompress $compressed;
# import sfreeze, sfreeze_cref and sfreeze_c use Compress::LZF ':freeze';
$serialized = sfreeze_c [4,5,6]; $original_data = sthaw $serialized;
LZF is an extremely fast (not that much slower than a pure memcpy) compression algorithm. It is ideal for applications where you want to save some space but not at the cost of speed. It is ideal for repetitive data as well. The module is self-contained and very small (no large library to be pulled in). It is also free, so there should be no problems incorporating this module into commercial programs.
I have no idea wether any patents in any countries apply to this algorithm, but at the moment it is believed that it is free from any patents.
The compress_best
function uses a different algorithm that is slower
but usually achieves better compression.
compress
) and return the original
data. Decompression errors can result in either broken data (there is no
checksum kept) or a runtime error.
undef (the perl undefined value) => a special cookie (undef'ness is being preserved) IV, NV, PV (i.e. a _plain_ perl scalar): => stays as is when it contains normal text/numbers => gets serialized into a string RV, undef, other funny objects (magical ones for example): => data structure is freeze'd into a string.
That is, it tries to leave ``normal'', human-readable data untouched but still serializes complex data structures into strings. The idea is to keep readability as high as possible, and in cases readability can't be helped anyways, it tries to compress the string.
The sfreeze
functions will enlarge the original data one byte at most
and will only load the Storable method when neccessary.
The sfreeze_best
function uses a different algorithm that is slower
but usually achieves better compression.
sfreeze
, but always tries to c
ompress the resulting
string. This still leaves most small objects (most numbers) untouched.
The sfreeze_c
function uses a different algorithm that is slower
but usually achieves better compression.
sfreeze
, but tries to c
ompress the resulting string
unless it's a ``simple'' string. References for example are not ``simple'' and
as such are being compressed.
The sfreeze_cr_best
function uses a different algorithm that is slower
but usually achieves better compression.
Other Compress::* modules, especially Compress::LZV1 (an older, less speedy module that guarentees only 1 byte overhead worst case) and Compress::Zlib.
This perl extension and the underlying liblzf were written by Marc Lehmann <schmorp@schmorp.de> (See also http://liblzf.plan9.de/).
Compress::LZF - extremely light-weight Lempel-Ziv-Free compression |