mirror of https://github.com/lukechilds/node.git
Browse Source
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>v5.x
Claudio Rodriguez
9 years ago
committed by
Jeremiah Senkpiel
5 changed files with 135 additions and 0 deletions
@ -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); |
||||
|
} |
@ -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); |
||||
|
} |
@ -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); |
||||
|
} |
@ -0,0 +1,41 @@ |
|||||
|
'use strict'; |
||||
|
|
||||
|
const common = require('../common'); |
||||
|
const assert = require('assert'); |
||||
|
const a = require('assert'); |
||||
|
|
||||
|
function makeBlock(f) { |
||||
|
var args = Array.prototype.slice.call(arguments, 1); |
||||
|
return function() { |
||||
|
return f.apply(this, args); |
||||
|
}; |
||||
|
} |
||||
|
|
||||
|
const equalArrayPairs = [ |
||||
|
[new Uint8Array(1e5), new Uint8Array(1e5)], |
||||
|
[new Uint16Array(1e5), new Uint16Array(1e5)], |
||||
|
[new Uint32Array(1e5), new Uint32Array(1e5)], |
||||
|
[new Uint8ClampedArray(1e5), new Uint8ClampedArray(1e5)], |
||||
|
[new Int8Array(1e5), new Int8Array(1e5)], |
||||
|
[new Int16Array(1e5), new Int16Array(1e5)], |
||||
|
[new Int32Array(1e5), new Int32Array(1e5)], |
||||
|
[new Float32Array(1e5), new Float32Array(1e5)], |
||||
|
[new Float64Array(1e5), new Float64Array(1e5)] |
||||
|
]; |
||||
|
|
||||
|
const notEqualArrayPairs = [ |
||||
|
[new Uint8Array(2), new Uint8Array(3)], |
||||
|
[new Uint8Array([1, 2, 3]), new Uint8Array([4, 5, 6])], |
||||
|
[new Uint8ClampedArray([300, 2, 3]), new Uint8Array([300, 2, 3])] |
||||
|
]; |
||||
|
|
||||
|
equalArrayPairs.forEach((arrayPair) => { |
||||
|
assert.deepEqual(arrayPair[0], arrayPair[1]); |
||||
|
}); |
||||
|
|
||||
|
notEqualArrayPairs.forEach((arrayPair) => { |
||||
|
assert.throws( |
||||
|
makeBlock(a.deepEqual, arrayPair[0], arrayPair[1]), |
||||
|
a.AssertionError |
||||
|
); |
||||
|
}); |
Loading…
Reference in new issue