All Projects → gildor2 → Fast_zlib

gildor2 / Fast_zlib

Licence: bsd-3-clause
Heavily optimized zlib compression algorithm

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Fast zlib

Solid
🎯 A comprehensive gradient-free optimization framework written in Python
Stars: ✭ 546 (+420%)
Mutual labels:  algorithm, optimization
Zlib Ng
zlib replacement with optimizations for "next generation" systems.
Stars: ✭ 807 (+668.57%)
Mutual labels:  zlib, compression
Fflate
High performance (de)compression in an 8kB package
Stars: ✭ 547 (+420.95%)
Mutual labels:  zlib, compression
Ojalgo
oj! Algorithms
Stars: ✭ 336 (+220%)
Mutual labels:  algorithm, optimization
Csso Rails
CSS Optimizer(csso) ruby wrapper for Rails Asset pipeline
Stars: ✭ 86 (-18.1%)
Mutual labels:  optimization, compression
Lizard
Lizard (formerly LZ5) is an efficient compressor with very fast decompression. It achieves compression ratio that is comparable to zip/zlib and zstd/brotli (at low and medium compression levels) at decompression speed of 1000 MB/s and faster.
Stars: ✭ 408 (+288.57%)
Mutual labels:  zlib, compression
Minizip Ng
Fork of the popular zip manipulation library found in the zlib distribution.
Stars: ✭ 750 (+614.29%)
Mutual labels:  zlib, compression
decompress
Pure OCaml implementation of Zlib.
Stars: ✭ 103 (-1.9%)
Mutual labels:  compression, zlib
Denoflate
WebAssembly powered Deflate/Gzip/Zlib compression for Deno, written in Rust
Stars: ✭ 80 (-23.81%)
Mutual labels:  zlib, compression
Tris Webpack Boilerplate
A Webpack boilerplate for static websites that has all the necessary modern tools and optimizations built-in. Score a perfect 10/10 on performance.
Stars: ✭ 1,016 (+867.62%)
Mutual labels:  optimization, compression
Platypus
A Free and Open Source Python Library for Multiobjective Optimization
Stars: ✭ 313 (+198.1%)
Mutual labels:  algorithm, optimization
Algorithms Study Group
Study group for algorithms in Ruby, hosted at App Academy
Stars: ✭ 94 (-10.48%)
Mutual labels:  algorithm, compression
Zipper
C++ wrapper around minizip compression library
Stars: ✭ 272 (+159.05%)
Mutual labels:  zlib, compression
Lzbench
lzbench is an in-memory benchmark of open-source LZ77/LZSS/LZMA compressors
Stars: ✭ 490 (+366.67%)
Mutual labels:  zlib, compression
Imager
Automated image compression for efficiently distributing images on the web.
Stars: ✭ 266 (+153.33%)
Mutual labels:  optimization, compression
Pyswarms
A research toolkit for particle swarm optimization in Python
Stars: ✭ 742 (+606.67%)
Mutual labels:  algorithm, optimization
libcaesium
The Caesium compression library written in Rust
Stars: ✭ 58 (-44.76%)
Mutual labels:  compression, optimization
lzbase62
LZ77(LZSS) based compression algorithm in base62 for JavaScript.
Stars: ✭ 38 (-63.81%)
Mutual labels:  compression, zlib
Model Optimization
A toolkit to optimize ML models for deployment for Keras and TensorFlow, including quantization and pruning.
Stars: ✭ 992 (+844.76%)
Mutual labels:  optimization, compression
Zippy
Pure Nim implementation of deflate, zlib, gzip and zip.
Stars: ✭ 88 (-16.19%)
Mutual labels:  zlib, compression

Optimized version of longest_match for zlib

Summary

Fast zlib longest_match function. Produces slightly smaller compressed files for significantly faster time. For more details and updates please visit this page. Brief algorithm description is available on the home page of the project.

Source code repository is located on Github. Wiki page contains some additional notes and test results.

You may get precompiled binaries for Windows platform at this location

Build instructions

This library consists of 2 versions: C and assembly.

Building C version

You should replace longest_match() function in deflate.c with one located in Sources/match.h. One of possible ways is to making a file with contents looking like

#define ASMV
#include "deflate.c"

#undef local
#define local

#include "match.h"

void match_init()
{
}

and linking zlib with this file instead of deflate.c.

Building a 32-bit assembly version

This version is compatible only with x86 platform. To build a matcher, please start with obtaining the copy of the Netwide Assembler

For use with the Microsoft Visual Studio compile it with the following command line:

nasm match32.asm -f win32 -o match.obj

For the Watcom C use this:

nasm match32.asm -f obj -o match.obj -D OMF_FORMAT

For Linux use this command line:

nasm match32.asm -f elf32 -o match.o

Running tests

The library goes with built-in test application. Some information about its features could be found on wiki page.

On Unix platforms (those which has bash and perl out-of-the-box) you may simply run build.sh script located at the root directory of the project. This will build several versions of the test application and put them to obj/bin. There's a script which will run tests in automated mode, test.sh. Run test.sh --help to see available options. By default it will run several predefined tests for data locations from my own PC. If you'll need to change locations, just modify several bottom lined in the script (see DoTests <directory>).

For Windows platform, you'll need bash and perl to be installed and available via PATH environment variable. This could be achieved by installing Gygwin or MSYS projects to your computer. You may also get a set of required binaries here (you'll need BuildTools.zip).

License

This library is licensed under the BSD license.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].