'use strict'; const common = require('../common.js'); const fs = require('fs'); const zlib = require('zlib'); const bench = common.createBenchmark(main, { inputLen: [1024], duration: [5], type: ['string', 'buffer'], algorithm: ['gzip', 'brotli'] }); function main({ inputLen, duration, type, algorithm }) { const buffer = Buffer.alloc(inputLen, fs.readFileSync(__filename)); const chunk = type === 'buffer' ? buffer : buffer.toString('utf8'); const input = algorithm === 'gzip' ? zlib.createGzip() : zlib.createBrotliCompress(); const output = algorithm === 'gzip' ? zlib.createGunzip() : zlib.createBrotliDecompress(); let readFromOutput = 0; input.pipe(output); if (type === 'string') output.setEncoding('utf8'); output.on('data', (chunk) => readFromOutput += chunk.length); function write() { input.write(chunk, write); } bench.start(); write(); setTimeout(() => { // Give result in GBit/s, like the net benchmarks do bench.end(readFromOutput * 8 / (1024 ** 3)); // Cut off writing the easy way. input.write = () => {}; }, duration * 1000); }