diff options
author | Anna Henningsen <anna@addaleax.net> | 2018-04-14 18:26:57 +0200 |
---|---|---|
committer | Myles Borins <mylesborins@google.com> | 2018-05-04 11:54:32 -0400 |
commit | b0e6f10530e5ae2168ff7edd7fb9c6ffa8a8fbe5 (patch) | |
tree | 1c458e4bc710f150324d5a6be291115e5cfc7fad /benchmark | |
parent | 31812edb2d34c97193a912eaab671f383c6b7f42 (diff) | |
download | node-new-b0e6f10530e5ae2168ff7edd7fb9c6ffa8a8fbe5.tar.gz |
benchmark: add bench for zlib gzip + gunzip cycle
Originally wrote this for some work that is going to take a while
longer before it’s ready to be PR’ed, so it seems fine to start
with this on its own.
PR-URL: https://github.com/nodejs/node/pull/20034
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Diffstat (limited to 'benchmark')
-rw-r--r-- | benchmark/zlib/pipe.js | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/benchmark/zlib/pipe.js b/benchmark/zlib/pipe.js new file mode 100644 index 0000000000..9b05749bbb --- /dev/null +++ b/benchmark/zlib/pipe.js @@ -0,0 +1,39 @@ +'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'] +}); + +function main({ inputLen, duration, type }) { + const buffer = Buffer.alloc(inputLen, fs.readFileSync(__filename)); + const chunk = type === 'buffer' ? buffer : buffer.toString('utf8'); + + const input = zlib.createGzip(); + const output = zlib.createGunzip(); + + 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); +} |