Skip to content

Commit 9b104b4

Browse files
BridgeARFishrock123
authored andcommitted
benchmark: add assert map and set benchmarks
PR-URL: #14258 Reviewed-By: Refael Ackermann <[email protected]>
1 parent c866c90 commit 9b104b4

File tree

2 files changed

+255
-0
lines changed

2 files changed

+255
-0
lines changed

‎benchmark/assert/deepequal-map.js‎

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
'use strict';
2+
3+
/* eslint-disable no-restricted-properties */
4+
5+
constcommon=require('../common.js');
6+
constassert=require('assert');
7+
8+
constbench=common.createBenchmark(main,{
9+
n: [5e2],
10+
len: [5e2],
11+
method: [
12+
'deepEqual_primitiveOnly',
13+
'deepStrictEqual_primitiveOnly',
14+
'deepEqual_objectOnly',
15+
'deepStrictEqual_objectOnly',
16+
'deepEqual_mixed',
17+
'deepStrictEqual_mixed',
18+
'deepEqual_looseMatches',
19+
'notDeepEqual_primitiveOnly',
20+
'notDeepStrictEqual_primitiveOnly',
21+
'notDeepEqual_objectOnly',
22+
'notDeepStrictEqual_objectOnly',
23+
'notDeepEqual_mixed',
24+
'notDeepStrictEqual_mixed',
25+
'notDeepEqual_looseMatches',
26+
]
27+
});
28+
29+
functionbenchmark(method,n,values,values2){
30+
constactual=newMap(values);
31+
// Prevent reference equal elements
32+
constdeepCopy=JSON.parse(JSON.stringify(values2 ? values2 : values));
33+
constexpected=newMap(deepCopy);
34+
bench.start();
35+
for(vari=0;i<n;++i){
36+
method(actual,expected);
37+
}
38+
bench.end(n);
39+
}
40+
41+
functionmain(conf){
42+
constn=+conf.n;
43+
constlen=+conf.len;
44+
45+
constarray=Array(len).fill(1);
46+
varvalues,values2;
47+
48+
switch(conf.method){
49+
case'deepEqual_primitiveOnly':
50+
values=array.map((_,i)=>[`str_${i}`,123]);
51+
benchmark(assert.deepEqual,n,values);
52+
break;
53+
case'deepStrictEqual_primitiveOnly':
54+
values=array.map((_,i)=>[`str_${i}`,123]);
55+
benchmark(assert.deepStrictEqual,n,values);
56+
break;
57+
case'deepEqual_objectOnly':
58+
values=array.map((_,i)=>[[`str_${i}`,1],123]);
59+
benchmark(assert.deepEqual,n,values);
60+
break;
61+
case'deepStrictEqual_objectOnly':
62+
values=array.map((_,i)=>[[`str_${i}`,1],123]);
63+
benchmark(assert.deepStrictEqual,n,values);
64+
break;
65+
case'deepEqual_mixed':
66+
values=array.map((_,i)=>[i%2 ? [`str_${i}`,1] : `str_${i}`,123]);
67+
benchmark(assert.deepEqual,n,values);
68+
break;
69+
case'deepStrictEqual_mixed':
70+
values=array.map((_,i)=>[i%2 ? [`str_${i}`,1] : `str_${i}`,123]);
71+
benchmark(assert.deepStrictEqual,n,values);
72+
break;
73+
case'deepEqual_looseMatches':
74+
values=array.map((_,i)=>[i,i]);
75+
values2=values.slice().map((v)=>[String(v[0]),String(v[1])]);
76+
benchmark(assert.deepEqual,n,values,values2);
77+
break;
78+
case'notDeepEqual_primitiveOnly':
79+
values=array.map((_,i)=>[`str_${i}`,123]);
80+
values2=values.slice(0);
81+
values2[Math.floor(len/2)]=['w00t',123];
82+
benchmark(assert.notDeepEqual,n,values,values2);
83+
break;
84+
case'notDeepStrictEqual_primitiveOnly':
85+
values=array.map((_,i)=>[`str_${i}`,123]);
86+
values2=values.slice(0);
87+
values2[Math.floor(len/2)]=['w00t',123];
88+
benchmark(assert.notDeepStrictEqual,n,values,values2);
89+
break;
90+
case'notDeepEqual_objectOnly':
91+
values=array.map((_,i)=>[[`str_${i}`,1],123]);
92+
values2=values.slice(0);
93+
values2[Math.floor(len/2)]=[['w00t'],123];
94+
benchmark(assert.notDeepEqual,n,values,values2);
95+
break;
96+
case'notDeepStrictEqual_objectOnly':
97+
values=array.map((_,i)=>[[`str_${i}`,1],123]);
98+
values2=values.slice(0);
99+
values2[Math.floor(len/2)]=[['w00t'],123];
100+
benchmark(assert.notDeepStrictEqual,n,values,values2);
101+
break;
102+
case'notDeepEqual_mixed':
103+
values=array.map((_,i)=>[i%2 ? [`str_${i}`,1] : `str_${i}`,123]);
104+
values2=values.slice(0);
105+
values2[0]=['w00t',123];
106+
benchmark(assert.notDeepEqual,n,values,values2);
107+
break;
108+
case'notDeepStrictEqual_mixed':
109+
values=array.map((_,i)=>[i%2 ? [`str_${i}`,1] : `str_${i}`,123]);
110+
values2=values.slice(0);
111+
values2[0]=['w00t',123];
112+
benchmark(assert.notDeepStrictEqual,n,values,values2);
113+
break;
114+
case'notDeepEqual_looseMatches':
115+
values=array.map((_,i)=>[i,i]);
116+
values2=values.slice().map((v)=>[String(v[0]),String(v[1])]);
117+
values2[len-1]=[String(len+1),String(len+1)];
118+
benchmark(assert.notDeepEqual,n,values,values2);
119+
break;
120+
default:
121+
thrownewError('Unsupported method');
122+
}
123+
}

‎benchmark/assert/deepequal-set.js‎

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
'use strict';
2+
3+
/* eslint-disable no-restricted-properties */
4+
5+
constcommon=require('../common.js');
6+
constassert=require('assert');
7+
8+
constbench=common.createBenchmark(main,{
9+
n: [5e2],
10+
len: [5e2],
11+
method: [
12+
'deepEqual_primitiveOnly',
13+
'deepStrictEqual_primitiveOnly',
14+
'deepEqual_objectOnly',
15+
'deepStrictEqual_objectOnly',
16+
'deepEqual_mixed',
17+
'deepStrictEqual_mixed',
18+
'deepEqual_looseMatches',
19+
'notDeepEqual_primitiveOnly',
20+
'notDeepStrictEqual_primitiveOnly',
21+
'notDeepEqual_objectOnly',
22+
'notDeepStrictEqual_objectOnly',
23+
'notDeepEqual_mixed',
24+
'notDeepStrictEqual_mixed',
25+
'notDeepEqual_looseMatches',
26+
]
27+
});
28+
29+
functionbenchmark(method,n,values,values2){
30+
constactual=newSet(values);
31+
// Prevent reference equal elements
32+
constdeepCopy=JSON.parse(JSON.stringify(values2 ? values2 : values));
33+
constexpected=newSet(deepCopy);
34+
bench.start();
35+
for(vari=0;i<n;++i){
36+
method(actual,expected);
37+
}
38+
bench.end(n);
39+
}
40+
41+
functionmain(conf){
42+
constn=+conf.n;
43+
constlen=+conf.len;
44+
45+
constarray=Array(len).fill(1);
46+
47+
varvalues,values2;
48+
49+
switch(conf.method){
50+
case'deepEqual_primitiveOnly':
51+
values=array.map((_,i)=>`str_${i}`);
52+
benchmark(assert.deepEqual,n,values);
53+
break;
54+
case'deepStrictEqual_primitiveOnly':
55+
values=array.map((_,i)=>`str_${i}`);
56+
benchmark(assert.deepStrictEqual,n,values);
57+
break;
58+
case'deepEqual_objectOnly':
59+
values=array.map((_,i)=>[`str_${i}`,null]);
60+
benchmark(assert.deepEqual,n,values);
61+
break;
62+
case'deepStrictEqual_objectOnly':
63+
values=array.map((_,i)=>[`str_${i}`,null]);
64+
benchmark(assert.deepStrictEqual,n,values);
65+
break;
66+
case'deepEqual_mixed':
67+
values=array.map((_,i)=>{
68+
returni%2 ? [`str_${i}`,null] : `str_${i}`;
69+
});
70+
benchmark(assert.deepEqual,n,values);
71+
break;
72+
case'deepStrictEqual_mixed':
73+
values=array.map((_,i)=>{
74+
returni%2 ? [`str_${i}`,null] : `str_${i}`;
75+
});
76+
benchmark(assert.deepStrictEqual,n,values);
77+
break;
78+
case'deepEqual_looseMatches':
79+
values=array.map((_,i)=>i);
80+
values2=values.slice().map((v)=>String(v));
81+
benchmark(assert.deepEqual,n,values,values2);
82+
break;
83+
case'notDeepEqual_primitiveOnly':
84+
values=array.map((_,i)=>`str_${i}`);
85+
values2=values.slice(0);
86+
values2[Math.floor(len/2)]='w00t';
87+
benchmark(assert.notDeepEqual,n,values,values2);
88+
break;
89+
case'notDeepStrictEqual_primitiveOnly':
90+
values=array.map((_,i)=>`str_${i}`);
91+
values2=values.slice(0);
92+
values2[Math.floor(len/2)]='w00t';
93+
benchmark(assert.notDeepStrictEqual,n,values,values2);
94+
break;
95+
case'notDeepEqual_objectOnly':
96+
values=array.map((_,i)=>[`str_${i}`,null]);
97+
values2=values.slice(0);
98+
values2[Math.floor(len/2)]=['w00t'];
99+
benchmark(assert.notDeepEqual,n,values,values2);
100+
break;
101+
case'notDeepStrictEqual_objectOnly':
102+
values=array.map((_,i)=>[`str_${i}`,null]);
103+
values2=values.slice(0);
104+
values2[Math.floor(len/2)]=['w00t'];
105+
benchmark(assert.notDeepStrictEqual,n,values,values2);
106+
break;
107+
case'notDeepEqual_mixed':
108+
values=array.map((_,i)=>{
109+
returni%2 ? [`str_${i}`,null] : `str_${i}`;
110+
});
111+
values2=values.slice();
112+
values2[0]='w00t';
113+
benchmark(assert.notDeepEqual,n,values,values2);
114+
break;
115+
case'notDeepStrictEqual_mixed':
116+
values=array.map((_,i)=>{
117+
returni%2 ? [`str_${i}`,null] : `str_${i}`;
118+
});
119+
values2=values.slice();
120+
values2[0]='w00t';
121+
benchmark(assert.notDeepStrictEqual,n,values,values2);
122+
break;
123+
case'notDeepEqual_looseMatches':
124+
values=array.map((_,i)=>i);
125+
values2=values.slice().map((v)=>String(v));
126+
values2[len-1]=String(len+1);
127+
benchmark(assert.notDeepEqual,n,values,values2);
128+
break;
129+
default:
130+
thrownewError('Unsupported method');
131+
}
132+
}

0 commit comments

Comments
(0)