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'); + } +}