Skip to content

Commit 75b15eb

Browse files
committed
Issue 4057 - Use keyByFilter array lookup for seenFilters
1 parent 1d0e720 commit 75b15eb

File tree

1 file changed

+11
-15
lines changed

1 file changed

+11
-15
lines changed

lib/elemHide.js

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ var {FilterNotifier} = require("filterNotifier");
3131
* Lookup table, filters by their associated key
3232
* @type Object
3333
*/
34-
var filterByKey = Object.create(null);
34+
var filterByKey = [];
3535

3636
/**
3737
* Lookup table, keys of the filters by filter text
@@ -125,7 +125,7 @@ var ElemHide = exports.ElemHide =
125125
*/
126126
clear: function()
127127
{
128-
filterByKey = Object.create(null);
128+
filterByKey = [];
129129
keyByFilter = Object.create(null);
130130
filtersByDomain = Object.create(null);
131131
filtersBySelector = Object.create(null);
@@ -138,6 +138,7 @@ var ElemHide = exports.ElemHide =
138138

139139
_addToFiltersByDomain: function(filter)
140140
{
141+
let key = keyByFilter[filter.text];
141142
let domains = filter.domains || defaultDomains;
142143
for (let domain in domains)
143144
{
@@ -146,9 +147,9 @@ var ElemHide = exports.ElemHide =
146147
filters = filtersByDomain[domain] = Object.create(null);
147148

148149
if (domains[domain])
149-
filters[filter.text] = filter;
150+
filters[key] = filter;
150151
else
151-
filters[filter.text] = false;
152+
filters[key] = false;
152153
}
153154
},
154155

@@ -191,12 +192,7 @@ var ElemHide = exports.ElemHide =
191192
if (filter.text in keyByFilter)
192193
return;
193194

194-
let key;
195-
do {
196-
key = Math.random().toFixed(15).substr(5);
197-
} while (key in filterByKey);
198-
199-
filterByKey[key] = filter;
195+
let key = filterByKey.push(filter) - 1;
200196
keyByFilter[filter.text] = key;
201197

202198
if (usingGetSelectorsForDomain)
@@ -268,7 +264,7 @@ var ElemHide = exports.ElemHide =
268264
{
269265
let filters = filtersByDomain[domain];
270266
if (filters)
271-
delete filters[filter.text];
267+
delete filters[key];
272268
}
273269
}
274270
}
@@ -496,13 +492,13 @@ var ElemHide = exports.ElemHide =
496492
let filters = filtersByDomain[currentDomain];
497493
if (filters)
498494
{
499-
for (let filterText in filters)
495+
for (let filterKey in filters)
500496
{
501-
if (filterText in seenFilters)
497+
if (filterKey in seenFilters)
502498
continue;
503-
seenFilters[filterText] = true;
499+
seenFilters[filterKey] = true;
504500

505-
let filter = filters[filterText];
501+
let filter = filters[filterKey];
506502
if (filter && !this.getException(filter, domain))
507503
selectors.push(filter.selector);
508504
}

0 commit comments

Comments
 (0)