Multicore gzip/libz compression via a pig wrapper


2.0.22 years ago5 years agoMinified + gzip package size for @graphistry/node-pigz in KB


=== node-pigz by Graphistry, Inc. ===

What is it?

Node-pigz wraps pigz for multicore compression. Pigz "is a fully functional replacement for gzip that exploits multiple processors and multiple cores to the hilt when compressing data." It is a great way to reduce latency, or, for the same latency, increase compression.

Node-pigz supports both JavaScript's ArrayBuffers (typed arrays) and Node's Buffer. The default wrapper takes Uint8Arrays and returns Buffers.

The Latest Version

See github repo


node-pigz depends on pigz and node-gyp. It assumes pigz is at "/usr/local/bin/pigz".

  1. brew install pigz
  2. npm install -g node-gyp
  3. npm install


See file LICENSE


See github repo


var compress = require('./compress.js');

var inputArr = [];
for (var i = 0; i < 1024 * 1024; i++) {
    inputArr.push(i % 20);

var inputTypedArr = new Uint32Array(inputArr);
var t0 = new Date().getTime();
compress.deflate(new Uint8Array(inputTypedArr.buffer), function (err, outputBuffer) {
    if (err) {
        return console.error('Compression error', err);
    } else {
            'deflated:', (inputTypedArr.byteLength/(1024*1024)).toFixed(2), 'MB', 
            '-->', (outputBuffer.length/(1024*1024)), 'MB');
        console.log('(', (100 * outputBuffer.length/inputTypedArr.byteLength).toFixed(2), '%)');
        console.log(new Date().getTime() - t0, 'ms');

// Output:
// deflated: 4.00 MB --> 0.027303695678710938 MB
// ( 0.68 %)
// 28 'ms'

If you find any bugs or have a feature request, please open an issue on github!

The npm package download data comes from npm's download counts api and package details come from npms.io.