Skip to content

Commit 289d862

Browse files
committed
benchmark: add benchmarks for Buffer.from()
Adds benchmarks for `Buffer.from()` and its various argument combinations. Ref: nodejs#8733 PR-URL: nodejs#8738 Reviewed-By: Ilkka Myller <ilkka.myller@nodefield.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
1 parent 558a884 commit 289d862

1 file changed

Lines changed: 86 additions & 0 deletions

File tree

benchmark/buffers/buffer-from.js

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
'use strict';
2+
3+
const common = require('../common.js');
4+
const assert = require('assert');
5+
const bench = common.createBenchmark(main, {
6+
source: [
7+
'array',
8+
'arraybuffer',
9+
'arraybuffer-middle',
10+
'buffer',
11+
'uint8array',
12+
'string',
13+
'string-base64'
14+
],
15+
len: [10, 2048],
16+
n: [1024]
17+
});
18+
19+
function main(conf) {
20+
const len = +conf.len;
21+
const n = +conf.n;
22+
23+
const array = new Array(len).fill(42);
24+
const arrayBuf = new ArrayBuffer(len);
25+
const str = 'a'.repeat(len);
26+
const buffer = Buffer.allocUnsafe(len);
27+
const uint8array = new Uint8Array(len);
28+
29+
var i;
30+
31+
switch (conf.source) {
32+
case 'array':
33+
bench.start();
34+
for (i = 0; i < n * 1024; i++) {
35+
Buffer.from(array);
36+
}
37+
bench.end(n);
38+
break;
39+
case 'arraybuffer':
40+
bench.start();
41+
for (i = 0; i < n * 1024; i++) {
42+
Buffer.from(arrayBuf);
43+
}
44+
bench.end(n);
45+
break;
46+
case 'arraybuffer-middle':
47+
const offset = ~~(len / 4);
48+
const length = ~~(len / 2);
49+
bench.start();
50+
for (i = 0; i < n * 1024; i++) {
51+
Buffer.from(arrayBuf, offset, length);
52+
}
53+
bench.end(n);
54+
break;
55+
case 'buffer':
56+
bench.start();
57+
for (i = 0; i < n * 1024; i++) {
58+
Buffer.from(buffer);
59+
}
60+
bench.end(n);
61+
break;
62+
case 'uint8array':
63+
bench.start();
64+
for (i = 0; i < n * 1024; i++) {
65+
Buffer.from(uint8array);
66+
}
67+
bench.end(n);
68+
break;
69+
case 'string':
70+
bench.start();
71+
for (i = 0; i < n * 1024; i++) {
72+
Buffer.from(str);
73+
}
74+
bench.end(n);
75+
break;
76+
case 'string-base64':
77+
bench.start();
78+
for (i = 0; i < n * 1024; i++) {
79+
Buffer.from(str, 'base64');
80+
}
81+
bench.end(n);
82+
break;
83+
default:
84+
assert.fail(null, null, 'Should not get here');
85+
}
86+
}

0 commit comments

Comments
 (0)