Fixed : Windows compilation
Added : Appveyor badge
5 files changed
tree: 94b181c5a6d2357cf01cdc01d01af8bc6c618d25
  1. .gitattributes
  2. .travis.yml
  3. Makefile
  4. NEWS
  5. README.md
  6. cmake_unofficial/
  7. examples/
  8. lib/
  9. lz4_Block_format.md
  10. lz4_Frame_format.md
  11. programs/
  12. visual/2012/
README.md

LZ4 - Extremely fast compression

LZ4 is lossless compression algorithm, providing compression speed at 400 MB/s per core, scalable with multi-cores CPU. It also features an extremely fast decoder, with speed in multiple GB/s per core, typically reaching RAM speed limits on multi-core systems.

A high compression derivative, called LZ4_HC, is also provided. It trades CPU time for compression ratio.

BranchStatus
masterBuild Status
devBuild Status
visualBuild status

Branch Policy:

  • The “master” branch is considered stable, at all times.
  • The “dev” branch is the one where all contributions must be merged before being promoted to master.
    • If you plan to propose a patch, please commit into the “dev” branch. Direct commit to “master” are not permitted.
  • Feature branches can also exist, for dedicated tests of larger modifications before merge into “dev” branch.

Benchmarks

The benchmark uses the Open-Source Benchmark program by m^2 (v0.14.3) compiled with GCC v4.8.2 on Linux Mint 64-bits v17. The reference system uses a Core i5-4300U @1.9GHz. Benchmark evaluates the compression of reference Silesia Corpus in single-thread mode.

CompressorRatioCompressionDecompression
memcpy1.0004200 MB/s4200 MB/s
RLE64 v3.01.0292800 MB/s2800 MB/s
density -c11.592700 MB/s920 MB/s
LZ4 fast (r129)1.607680 MB/s2220 MB/s
LZ4 (r129)2.101385 MB/s1850 MB/s
density -c22.083370 MB/s505 MB/s
LZO 2.062.108350 MB/s510 MB/s
QuickLZ 1.5.1.b62.238320 MB/s380 MB/s
Snappy 1.1.02.091250 MB/s960 MB/s
density -c32.370190 MB/s185 MB/s
zlib 1.2.8 -12.73059 MB/s250 MB/s
LZ4 HC (r129)2.72022 MB/s1830 MB/s
zlib 1.2.8 -63.09918 MB/s270 MB/s

The LZ4 block compression format is detailed within lz4_Block_format.

Block format doesn't deal with header information, nor how to handle arbitrarily long files or data streams. This is the purpose of the Frame format. Interoperable versions of LZ4 should use the same frame format, defined into lz4_Frame_format.