diff options
author | Andreas Madsen <amwebdk@gmail.com> | 2016-01-29 21:40:04 +0100 |
---|---|---|
committer | Rod Vagg <rod@vagg.org> | 2016-02-26 20:28:45 +1100 |
commit | d9079ab8013ba2c2a4704a2cca6fe3fcc0a1ecdd (patch) | |
tree | ca1875d33a81d5679e96e9be4afce1d2083bc6ac /benchmark/buffers | |
parent | 1d7c37018f619ebd4c7d538a4b65461cc447728d (diff) | |
download | android-node-v8-d9079ab8013ba2c2a4704a2cca6fe3fcc0a1ecdd.tar.gz android-node-v8-d9079ab8013ba2c2a4704a2cca6fe3fcc0a1ecdd.tar.bz2 android-node-v8-d9079ab8013ba2c2a4704a2cca6fe3fcc0a1ecdd.zip |
benchmark: move misc to categorized directories
PR-URL: https://github.com/nodejs/node/pull/5177
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Rod Vagg <rod@vagg.org>
Diffstat (limited to 'benchmark/buffers')
-rw-r--r-- | benchmark/buffers/string-decoder.js | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/benchmark/buffers/string-decoder.js b/benchmark/buffers/string-decoder.js new file mode 100644 index 0000000000..e45016b559 --- /dev/null +++ b/benchmark/buffers/string-decoder.js @@ -0,0 +1,61 @@ +'use strict'; +var common = require('../common.js'); +var StringDecoder = require('string_decoder').StringDecoder; + +var bench = common.createBenchmark(main, { + encoding: ['ascii', 'utf8', 'base64-utf8', 'base64-ascii'], + inlen: [32, 128, 1024], + chunk: [16, 64, 256, 1024], + n: [25e4] +}); + +var UTF_ALPHA = 'Blåbærsyltetøy'; +var ASC_ALPHA = 'Blueberry jam'; + +function main(conf) { + var encoding = conf.encoding; + var inLen = conf.inlen | 0; + var chunkLen = conf.chunk | 0; + var n = conf.n | 0; + + var alpha; + var chunks = []; + var str = ''; + var isBase64 = (encoding === 'base64-ascii' || encoding === 'base64-utf8'); + + if (encoding === 'ascii' || encoding === 'base64-ascii') + alpha = ASC_ALPHA; + else if (encoding === 'utf8' || encoding === 'base64-utf8') + alpha = UTF_ALPHA; + else + throw new Error('Bad encoding'); + + var sd = new StringDecoder(isBase64 ? 'base64' : encoding); + + for (var i = 0; i < inLen; ++i) { + if (i > 0 && (i % chunkLen) === 0 && !isBase64) { + chunks.push(new Buffer(str, encoding)); + str = ''; + } + str += alpha[i % alpha.length]; + } + if (str.length > 0 && !isBase64) + chunks.push(new Buffer(str, encoding)); + if (isBase64) { + str = new Buffer(str, 'utf8').toString('base64'); + while (str.length > 0) { + var len = Math.min(chunkLen, str.length); + chunks.push(new Buffer(str.substring(0, len), 'utf8')); + str = str.substring(len); + } + } + + var nChunks = chunks.length; + + bench.start(); + for (var i = 0; i < n; ++i) { + for (var j = 0; j < nChunks; ++j) + sd.write(chunks[j]); + } + bench.end(n); +} |