summaryrefslogtreecommitdiff
path: root/benchmark/assert
diff options
context:
space:
mode:
authorClaudio Rodriguez <cjrodr@yahoo.com>2015-12-17 10:05:45 -0300
committerRoman Reiss <me@silverwind.io>2015-12-21 18:04:01 +0100
commit63786227cc8cf3dbe18664a2e8765a4ee11fe8ff (patch)
tree545ddea482ed34504437f170a0b1113e5b00768e /benchmark/assert
parent50125e27b763aa49a93788c4605addf3c5966f44 (diff)
downloadandroid-node-v8-63786227cc8cf3dbe18664a2e8765a4ee11fe8ff.tar.gz
android-node-v8-63786227cc8cf3dbe18664a2e8765a4ee11fe8ff.tar.bz2
android-node-v8-63786227cc8cf3dbe18664a2e8765a4ee11fe8ff.zip
assert: typed array deepequal performance fix
assert.deepEqual: when actual and expected are typed arrays, wrap them in a new Buffer each to increase performance significantly. PR-URL: https://github.com/nodejs/node/pull/4330 Fixes: https://github.com/nodejs/node/issues/4294 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Roman Reiss <me@silverwind.io> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Diffstat (limited to 'benchmark/assert')
-rw-r--r--benchmark/assert/deepequal-prims-and-objs-big-array.js37
-rw-r--r--benchmark/assert/deepequal-prims-and-objs-big-loop.js30
-rw-r--r--benchmark/assert/deepequal-typedarrays.js22
3 files changed, 89 insertions, 0 deletions
diff --git a/benchmark/assert/deepequal-prims-and-objs-big-array.js b/benchmark/assert/deepequal-prims-and-objs-big-array.js
new file mode 100644
index 0000000000..d8d2b57331
--- /dev/null
+++ b/benchmark/assert/deepequal-prims-and-objs-big-array.js
@@ -0,0 +1,37 @@
+'use strict';
+var common = require('../common.js');
+var assert = require('assert');
+var bench = common.createBenchmark(main, {
+ prim: [
+ null,
+ undefined,
+ 'a',
+ 1,
+ true,
+ {0: 'a'},
+ [1, 2, 3],
+ new Array([1, 2, 3])
+ ],
+ n: [25]
+});
+
+function main(conf) {
+ var prim = conf.prim;
+ var n = +conf.n;
+ var primArray;
+ var primArrayCompare;
+ var x;
+
+ primArray = new Array();
+ primArrayCompare = new Array();
+ for (x = 0; x < (1e5); x++) {
+ primArray.push(prim);
+ primArrayCompare.push(prim);
+ }
+
+ bench.start();
+ for (x = 0; x < n; x++) {
+ assert.deepEqual(primArray, primArrayCompare);
+ }
+ bench.end(n);
+}
diff --git a/benchmark/assert/deepequal-prims-and-objs-big-loop.js b/benchmark/assert/deepequal-prims-and-objs-big-loop.js
new file mode 100644
index 0000000000..5f0519bb3b
--- /dev/null
+++ b/benchmark/assert/deepequal-prims-and-objs-big-loop.js
@@ -0,0 +1,30 @@
+'use strict';
+var common = require('../common.js');
+var assert = require('assert');
+var bench = common.createBenchmark(main, {
+ prim: [
+ null,
+ undefined,
+ 'a',
+ 1,
+ true,
+ {0: 'a'},
+ [1, 2, 3],
+ new Array([1, 2, 3])
+ ],
+ n: [1e5]
+});
+
+function main(conf) {
+ var prim = conf.prim;
+ var n = +conf.n;
+ var x;
+
+ bench.start();
+
+ for (x = 0; x < n; x++) {
+ assert.deepEqual(new Array([prim]), new Array([prim]));
+ }
+
+ bench.end(n);
+}
diff --git a/benchmark/assert/deepequal-typedarrays.js b/benchmark/assert/deepequal-typedarrays.js
new file mode 100644
index 0000000000..99c13206d7
--- /dev/null
+++ b/benchmark/assert/deepequal-typedarrays.js
@@ -0,0 +1,22 @@
+'use strict';
+var common = require('../common.js');
+var assert = require('assert');
+var bench = common.createBenchmark(main, {
+ type: ('Int8Array Uint8Array Int16Array Uint16Array Int32Array Uint32Array ' +
+ 'Float32Array Float64Array Uint8ClampedArray').split(' '),
+ n: [1]
+});
+
+function main(conf) {
+ var type = conf.type;
+ var clazz = global[type];
+ var n = +conf.n;
+
+ bench.start();
+ var actual = new clazz(n * 1e6);
+ var expected = new clazz(n * 1e6);
+
+ assert.deepEqual(actual, expected);
+
+ bench.end(n);
+}