aboutsummaryrefslogtreecommitdiff
path: root/benchmark
diff options
context:
space:
mode:
authorAnna Henningsen <anna@addaleax.net>2016-09-23 15:55:24 +0200
committerAnna Henningsen <anna@addaleax.net>2016-09-26 20:20:24 +0200
commit289d862c6f1baeef3c361aa9fb358b72afacd6e3 (patch)
tree829638a6dbe529c40d6bc3a742c0e0414b118788 /benchmark
parent558a884d4132a2e5088833de6e096e32e78d5f2b (diff)
downloadandroid-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.js86
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');
+ }
+}