aboutsummaryrefslogtreecommitdiff
path: root/benchmark/buffers
diff options
context:
space:
mode:
authorAndreas Madsen <amwebdk@gmail.com>2016-01-29 21:40:04 +0100
committerRod Vagg <rod@vagg.org>2016-02-26 20:28:45 +1100
commitd9079ab8013ba2c2a4704a2cca6fe3fcc0a1ecdd (patch)
treeca1875d33a81d5679e96e9be4afce1d2083bc6ac /benchmark/buffers
parent1d7c37018f619ebd4c7d538a4b65461cc447728d (diff)
downloadandroid-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.js61
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);
+}