diff options
author | Anna Henningsen <anna@addaleax.net> | 2016-09-23 15:55:24 +0200 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2016-09-26 20:20:24 +0200 |
commit | 289d862c6f1baeef3c361aa9fb358b72afacd6e3 (patch) | |
tree | 829638a6dbe529c40d6bc3a742c0e0414b118788 /benchmark | |
parent | 558a884d4132a2e5088833de6e096e32e78d5f2b (diff) | |
download | android-node-v8-289d862c6f1baeef3c361aa9fb358b72afacd6e3.tar.gz android-node-v8-289d862c6f1baeef3c361aa9fb358b72afacd6e3.tar.bz2 android-node-v8-289d862c6f1baeef3c361aa9fb358b72afacd6e3.zip |
benchmark: add benchmarks for `Buffer.from()`
Adds benchmarks for `Buffer.from()` and its various
argument combinations.
Ref: https://github.com/nodejs/node/issues/8733
PR-URL: https://github.com/nodejs/node/pull/8738
Reviewed-By: Ilkka Myller <ilkka.myller@nodefield.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Diffstat (limited to 'benchmark')
-rw-r--r-- | benchmark/buffers/buffer-from.js | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/benchmark/buffers/buffer-from.js b/benchmark/buffers/buffer-from.js new file mode 100644 index 0000000000..c35a0f23e0 --- /dev/null +++ b/benchmark/buffers/buffer-from.js @@ -0,0 +1,86 @@ +'use strict'; + +const common = require('../common.js'); +const assert = require('assert'); +const bench = common.createBenchmark(main, { + source: [ + 'array', + 'arraybuffer', + 'arraybuffer-middle', + 'buffer', + 'uint8array', + 'string', + 'string-base64' + ], + len: [10, 2048], + n: [1024] +}); + +function main(conf) { + const len = +conf.len; + const n = +conf.n; + + const array = new Array(len).fill(42); + const arrayBuf = new ArrayBuffer(len); + const str = 'a'.repeat(len); + const buffer = Buffer.allocUnsafe(len); + const uint8array = new Uint8Array(len); + + var i; + + switch (conf.source) { + case 'array': + bench.start(); + for (i = 0; i < n * 1024; i++) { + Buffer.from(array); + } + bench.end(n); + break; + case 'arraybuffer': + bench.start(); + for (i = 0; i < n * 1024; i++) { + Buffer.from(arrayBuf); + } + bench.end(n); + break; + case 'arraybuffer-middle': + const offset = ~~(len / 4); + const length = ~~(len / 2); + bench.start(); + for (i = 0; i < n * 1024; i++) { + Buffer.from(arrayBuf, offset, length); + } + bench.end(n); + break; + case 'buffer': + bench.start(); + for (i = 0; i < n * 1024; i++) { + Buffer.from(buffer); + } + bench.end(n); + break; + case 'uint8array': + bench.start(); + for (i = 0; i < n * 1024; i++) { + Buffer.from(uint8array); + } + bench.end(n); + break; + case 'string': + bench.start(); + for (i = 0; i < n * 1024; i++) { + Buffer.from(str); + } + bench.end(n); + break; + case 'string-base64': + bench.start(); + for (i = 0; i < n * 1024; i++) { + Buffer.from(str, 'base64'); + } + bench.end(n); + break; + default: + assert.fail(null, null, 'Should not get here'); + } +} |