Skip to content

Commit 4afed9d

Browse files
committed
consolidate namespaced construction into utility
1 parent 0e7bfff commit 4afed9d

File tree

4 files changed

+155
-139
lines changed

4 files changed

+155
-139
lines changed

results_latest.txt

+110-110
Original file line numberDiff line numberDiff line change
@@ -6,54 +6,54 @@ Boolean:
66
10,000: 0.001 sec
77
50,000: 0.003 sec
88
100,000: 0.002 sec
9-
500,000: 0.009 sec
10-
1,000,000: 0.02 sec
11-
5,000,000: 0.102 sec
12-
Average: 47,956,835 ops/sec
9+
500,000: 0.01 sec
10+
1,000,000: 0.019 sec
11+
5,000,000: 0.1 sec
12+
Average: 48,656,934 ops/sec
1313

1414
Infinity:
15-
1,000: 0 sec
16-
5,000: 0.002 sec
15+
1,000: 0.001 sec
16+
5,000: 0.001 sec
1717
10,000: 0.001 sec
18-
50,000: 0.003 sec
19-
100,000: 0.004 sec
20-
500,000: 0.018 sec
18+
50,000: 0.004 sec
19+
100,000: 0.003 sec
20+
500,000: 0.02 sec
2121
1,000,000: 0.035 sec
22-
5,000,000: 0.177 sec
23-
Average: 27,775,000 ops/sec
22+
5,000,000: 0.174 sec
23+
Average: 27,891,213 ops/sec
2424

2525
NaN:
2626
1,000: 0 sec
27-
5,000: 0.001 sec
28-
10,000: 0 sec
27+
5,000: 0 sec
28+
10,000: 0.001 sec
2929
50,000: 0.001 sec
3030
100,000: 0.003 sec
31-
500,000: 0.014 sec
31+
500,000: 0.013 sec
3232
1,000,000: 0.026 sec
33-
5,000,000: 0.145 sec
34-
Average: 35,084,211 ops/sec
33+
5,000,000: 0.132 sec
34+
Average: 37,875,000 ops/sec
3535

3636
null:
3737
1,000: 0 sec
3838
5,000: 0 sec
39-
10,000: 0.001 sec
40-
50,000: 0.001 sec
41-
100,000: 0.003 sec
39+
10,000: 0 sec
40+
50,000: 0.002 sec
41+
100,000: 0.002 sec
4242
500,000: 0.013 sec
43-
1,000,000: 0.028 sec
44-
5,000,000: 0.137 sec
45-
Average: 36,426,230 ops/sec
43+
1,000,000: 0.027 sec
44+
5,000,000: 0.133 sec
45+
Average: 37,661,017 ops/sec
4646

4747
Number:
4848
1,000: 0 sec
4949
5,000: 0 sec
50-
10,000: 0.001 sec
51-
50,000: 0.001 sec
52-
100,000: 0.003 sec
53-
500,000: 0.012 sec
54-
1,000,000: 0.026 sec
55-
5,000,000: 0.127 sec
56-
Average: 39,211,765 ops/sec
50+
10,000: 0 sec
51+
50,000: 0.002 sec
52+
100,000: 0.002 sec
53+
500,000: 0.013 sec
54+
1,000,000: 0.025 sec
55+
5,000,000: 0.125 sec
56+
Average: 39,916,168 ops/sec
5757

5858
String:
5959
1,000: 0 sec
@@ -62,127 +62,127 @@ String:
6262
50,000: 0.001 sec
6363
100,000: 0.003 sec
6464
500,000: 0.01 sec
65-
1,000,000: 0.022 sec
66-
5,000,000: 0.108 sec
67-
Average: 46,291,667 ops/sec
65+
1,000,000: 0.021 sec
66+
5,000,000: 0.104 sec
67+
Average: 47,956,835 ops/sec
6868

6969
undefined:
7070
1,000: 0 sec
7171
5,000: 0 sec
72-
10,000: 0.001 sec
73-
50,000: 0.001 sec
72+
10,000: 0 sec
73+
50,000: 0.002 sec
7474
100,000: 0.004 sec
7575
500,000: 0.018 sec
76-
1,000,000: 0.035 sec
77-
5,000,000: 0.174 sec
78-
Average: 28,609,442 ops/sec
76+
1,000,000: 0.037 sec
77+
5,000,000: 0.185 sec
78+
Average: 27,097,561 ops/sec
7979

8080
Function:
8181
1,000: 0.001 sec
8282
5,000: 0.001 sec
83-
10,000: 0.003 sec
84-
50,000: 0.007 sec
83+
10,000: 0.002 sec
84+
50,000: 0.008 sec
8585
100,000: 0.016 sec
86-
500,000: 0.079 sec
87-
1,000,000: 0.157 sec
88-
5,000,000: 0.785 sec
89-
Average: 6,354,623 ops/sec
86+
500,000: 0.077 sec
87+
1,000,000: 0.155 sec
88+
5,000,000: 0.774 sec
89+
Average: 6,446,809 ops/sec
9090

9191
RegExp:
92-
1,000: 0 sec
93-
5,000: 0.003 sec
94-
10,000: 0.004 sec
92+
1,000: 0.001 sec
93+
5,000: 0.002 sec
94+
10,000: 0.007 sec
9595
50,000: 0.016 sec
96-
100,000: 0.03 sec
97-
500,000: 0.152 sec
98-
1,000,000: 0.304 sec
99-
5,000,000: 1.519 sec
100-
Average: 3,286,982 ops/sec
96+
100,000: 0.032 sec
97+
500,000: 0.162 sec
98+
1,000,000: 0.323 sec
99+
5,000,000: 1.617 sec
100+
Average: 3,086,111 ops/sec
101101

102102
Array:
103103
1,000: 0.002 sec
104-
5,000: 0.008 sec
105-
10,000: 0.007 sec
106-
50,000: 0.035 sec
107-
100,000: 0.07 sec
108-
500,000: 0.349 sec
109-
1,000,000: 0.69 sec
110-
5,000,000: 3.416 sec
111-
Average: 1,456,412 ops/sec
104+
5,000: 0.005 sec
105+
10,000: 0.011 sec
106+
50,000: 0.036 sec
107+
100,000: 0.072 sec
108+
500,000: 0.354 sec
109+
1,000,000: 0.7 sec
110+
5,000,000: 3.482 sec
111+
Average: 1,429,858 ops/sec
112112

113113
Date:
114114
1,000: 0 sec
115115
5,000: 0.002 sec
116-
10,000: 0.002 sec
117-
50,000: 0.011 sec
118-
100,000: 0.015 sec
119-
500,000: 0.074 sec
120-
1,000,000: 0.149 sec
121-
5,000,000: 0.748 sec
122-
Average: 6,659,341 ops/sec
116+
10,000: 0.003 sec
117+
50,000: 0.008 sec
118+
100,000: 0.016 sec
119+
500,000: 0.081 sec
120+
1,000,000: 0.161 sec
121+
5,000,000: 0.803 sec
122+
Average: 6,206,704 ops/sec
123123

124124
Error:
125125
1,000: 0.001 sec
126-
5,000: 0.006 sec
127-
10,000: 0.013 sec
128-
50,000: 0.046 sec
129-
100,000: 0.093 sec
130-
500,000: 0.459 sec
131-
1,000,000: 0.92 sec
132-
5,000,000: 4.609 sec
133-
Average: 1,084,431 ops/sec
126+
5,000: 0.007 sec
127+
10,000: 0.014 sec
128+
50,000: 0.048 sec
129+
100,000: 0.096 sec
130+
500,000: 0.481 sec
131+
1,000,000: 0.963 sec
132+
5,000,000: 4.818 sec
133+
Average: 1,037,026 ops/sec
134134

135135
Event:
136136
1,000: 0.002 sec
137-
5,000: 0.008 sec
137+
5,000: 0.006 sec
138138
10,000: 0.009 sec
139-
50,000: 0.032 sec
140-
100,000: 0.063 sec
141-
500,000: 0.312 sec
142-
1,000,000: 0.626 sec
143-
5,000,000: 3.13 sec
144-
Average: 1,593,974 ops/sec
139+
50,000: 0.03 sec
140+
100,000: 0.061 sec
141+
500,000: 0.303 sec
142+
1,000,000: 0.606 sec
143+
5,000,000: 3.037 sec
144+
Average: 1,644,302 ops/sec
145145

146146
Map:
147-
1,000: 0.001 sec
147+
1,000: 0.002 sec
148148
5,000: 0.006 sec
149149
10,000: 0.007 sec
150-
50,000: 0.032 sec
151-
100,000: 0.062 sec
152-
500,000: 0.313 sec
153-
1,000,000: 0.629 sec
154-
5,000,000: 3.144 sec
155-
Average: 1,589,413 ops/sec
150+
50,000: 0.033 sec
151+
100,000: 0.065 sec
152+
500,000: 0.321 sec
153+
1,000,000: 0.648 sec
154+
5,000,000: 3.211 sec
155+
Average: 1,552,760 ops/sec
156156

157157
Object:
158-
1,000: 0.002 sec
159-
5,000: 0.008 sec
158+
1,000: 0.003 sec
159+
5,000: 0.007 sec
160160
10,000: 0.012 sec
161-
50,000: 0.057 sec
162-
100,000: 0.113 sec
163-
500,000: 0.562 sec
164-
1,000,000: 1.121 sec
165-
5,000,000: 5.602 sec
166-
Average: 891,534 ops/sec
161+
50,000: 0.055 sec
162+
100,000: 0.11 sec
163+
500,000: 0.552 sec
164+
1,000,000: 1.098 sec
165+
5,000,000: 5.476 sec
166+
Average: 911,527 ops/sec
167167

168168
Object (circular):
169-
1,000: 0.002 sec
170-
5,000: 0.006 sec
169+
1,000: 0.001 sec
170+
5,000: 0.008 sec
171171
10,000: 0.011 sec
172-
50,000: 0.052 sec
173-
100,000: 0.102 sec
174-
500,000: 0.507 sec
175-
1,000,000: 1.01 sec
176-
5,000,000: 5.049 sec
177-
Average: 989,168 ops/sec
172+
50,000: 0.053 sec
173+
100,000: 0.101 sec
174+
500,000: 0.504 sec
175+
1,000,000: 1.011 sec
176+
5,000,000: 5.052 sec
177+
Average: 988,874 ops/sec
178178

179179
Set:
180180
1,000: 0.001 sec
181181
5,000: 0.005 sec
182-
10,000: 0.006 sec
182+
10,000: 0.007 sec
183183
50,000: 0.029 sec
184-
100,000: 0.06 sec
185-
500,000: 0.286 sec
186-
1,000,000: 0.572 sec
187-
5,000,000: 2.857 sec
188-
Average: 1,746,855 ops/sec
184+
100,000: 0.059 sec
185+
500,000: 0.284 sec
186+
1,000,000: 0.566 sec
187+
5,000,000: 2.841 sec
188+
Average: 1,757,911 ops/sec

src/cache.ts

+8-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
import { SEPARATOR } from './constants';
2+
import { namespaceComplexValue } from './utils';
3+
4+
import type { Class } from './constants';
25

36
export const NON_ENUMERABLE_CLASS_CACHE = new WeakMap<
47
NonEnumerableObject,
@@ -14,15 +17,18 @@ type NonEnumerableObject =
1417
let refId = 0;
1518
export function getUnsupportedHash(
1619
value: NonEnumerableObject,
17-
prefix: string,
20+
classType: Class,
1821
): string {
1922
const cached = NON_ENUMERABLE_CLASS_CACHE.get(value);
2023

2124
if (cached) {
2225
return cached;
2326
}
2427

25-
const toCache = prefix + 'NOT_ENUMERABLE' + SEPARATOR + refId++;
28+
const toCache = namespaceComplexValue(
29+
classType,
30+
'NOT_ENUMERABLE' + SEPARATOR + refId++,
31+
);
2632

2733
NON_ENUMERABLE_CLASS_CACHE.set(value, toCache);
2834

0 commit comments

Comments
 (0)