| 'use strict'; |
| const common = require('../common.js'); |
| const zlib = require('zlib'); |
| |
| const bench = common.createBenchmark(main, { |
| inputLen: [16 * 1024 * 1024], |
| chunkLen: [1024], |
| n: [1e2] |
| }); |
| |
| function main({ n, inputLen, chunkLen }) { |
| const input = zlib.deflateSync(Buffer.alloc(inputLen, 'a')); |
| |
| let i = 0; |
| bench.start(); |
| (function next() { |
| let p = 0; |
| const inflater = zlib.createInflate(); |
| inflater.resume(); |
| inflater.on('finish', () => { |
| if (i++ === n) |
| return bench.end(n); |
| next(); |
| }); |
| |
| (function nextChunk() { |
| if (p >= input.length) |
| return inflater.end(); |
| inflater.write(input.slice(p, p += chunkLen), nextChunk); |
| })(); |
| })(); |
| } |