mirror of https://github.com/lukechilds/node.git
Browse Source
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>v7.x
committed by
James M Snell
1 changed files with 86 additions and 0 deletions
@ -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'); |
|||
} |
|||
} |
Loading…
Reference in new issue