benchmark: add benchmarks for encodings

PR-URL: https://github.com/nodejs/node/pull/50348
Reviewed-By: Vinícius Lourenço Claro Cardoso <contact@viniciusl.com.br>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
This commit is contained in:
Aras Abbasi
2023-10-25 22:46:33 +02:00
committed by GitHub
parent c3a41d83de
commit d8951303d1
6 changed files with 111 additions and 3 deletions

View File

@@ -15,7 +15,15 @@ function main({ n, size }) {
assert.strictEqual(s.length % 4, 0);
const b = Buffer.allocUnsafe(encodedSize);
b.write(s, 0, encodedSize, 'base64');
let tmp;
bench.start();
for (let i = 0; i < n; i += 1) b.base64Write(s, 0, s.length);
for (let i = 0; i < n; i += 1)
tmp = b.base64Write(s, 0, s.length);
bench.end(n);
assert.strictEqual(tmp, encodedSize);
}

View File

@@ -21,6 +21,7 @@
'use strict';
const common = require('../common.js');
const assert = require('assert');
const bench = common.createBenchmark(main, {
len: [64 * 1024 * 1024],
@@ -35,7 +36,15 @@ function main({ n, len }) {
let i;
for (i = 0; i < 256; ++i) s += String.fromCharCode(i);
for (i = 0; i < len; i += 256) b.write(s, i, 256, 'ascii');
let tmp;
bench.start();
for (i = 0; i < n; ++i) b.toString('base64');
for (i = 0; i < n; ++i)
tmp = b.toString('base64');
bench.end(n);
assert.strictEqual(typeof tmp, 'string');
}

View File

@@ -0,0 +1,29 @@
'use strict';
const assert = require('assert');
const common = require('../common.js');
const bench = common.createBenchmark(main, {
n: [32],
size: [8 << 20],
});
function main({ n, size }) {
const s = 'abcd'.repeat(size);
const encodedSize = s.length * 3 / 4;
// eslint-disable-next-line node-core/no-unescaped-regexp-dot
s.match(/./); // Flatten string.
assert.strictEqual(s.length % 4, 0);
const b = Buffer.allocUnsafe(encodedSize);
b.write(s, 0, encodedSize, 'base64url');
let tmp;
bench.start();
for (let i = 0; i < n; i += 1)
tmp = b.base64Write(s, 0, s.length);
bench.end(n);
assert.strictEqual(tmp, encodedSize);
}

View File

@@ -0,0 +1,29 @@
'use strict';
const common = require('../common.js');
const assert = require('assert');
const bench = common.createBenchmark(main, {
len: [64 * 1024 * 1024],
n: [32],
}, {
test: { len: 256 },
});
function main({ n, len }) {
const b = Buffer.allocUnsafe(len);
let s = '';
let i;
for (i = 0; i < 256; ++i) s += String.fromCharCode(i);
for (i = 0; i < len; i += 256) b.write(s, i, 256, 'ascii');
let tmp;
bench.start();
for (i = 0; i < n; ++i)
tmp = b.toString('base64url');
bench.end(n);
assert.strictEqual(typeof tmp, 'string');
}

View File

@@ -0,0 +1,29 @@
'use strict';
const common = require('../common.js');
const assert = require('assert');
const bench = common.createBenchmark(main, {
len: [64, 1024],
n: [1e6],
});
function main({ len, n }) {
const buf = Buffer.alloc(len);
for (let i = 0; i < buf.length; i++)
buf[i] = i & 0xff;
const plain = buf;
bench.start();
let tmp;
for (let i = 0; i < n; i += 1)
tmp = plain.toString('hex');
bench.end(n);
assert.strictEqual(typeof tmp, 'string');
}

View File

@@ -1,6 +1,7 @@
'use strict';
const common = require('../common.js');
const assert = require('assert');
const bench = common.createBenchmark(main, {
len: [64, 1024],
@@ -14,11 +15,14 @@ function main({ len, n }) {
buf[i] = i & 0xff;
const hex = buf.toString('hex');
let tmp;
bench.start();
for (let i = 0; i < n; i += 1)
Buffer.from(hex, 'hex');
tmp = Buffer.from(hex, 'hex');
bench.end(n);
assert.strictEqual(typeof tmp, 'object');
}