1
0
mirror of https://github.com/gorhill/uBlock.git synced 2024-09-14 23:12:28 +02:00

Code review related to performance in main content script

- Avoid concatenating with empty array: though the concatenated
  array is empty, this still forces the creation of a whole new
  array as per semantic of Array.prototype.concat().
  <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat>

- Do not convert arrays to strings when sending data to
  main process in surveyPhase1(): I no longer see any benefit
  doing so in profiling data (if I recall properly this was
  benefiting Firefox, but I can't remember for sure anymore why
  I chose to do so back then).
This commit is contained in:
Raymond Hill 2018-12-29 16:34:46 -05:00
parent 4ce1796f09
commit f35dff2c9d
No known key found for this signature in database
GPG Key ID: 25E1490B761470C2
2 changed files with 8 additions and 12 deletions

View File

@ -1147,7 +1147,9 @@ vAPI.domSurveyor = (function() {
pending.nodes = added;
} else {
nodes = pending.nodes.splice(0, 1000);
pending.nodes = pending.nodes.concat(added);
if ( added.length !== 0 ) {
pending.nodes = pending.nodes.concat(added);
}
}
return nodes;
};
@ -1212,8 +1214,8 @@ vAPI.domSurveyor = (function() {
{
what: 'retrieveGenericCosmeticSelectors',
hostname: hostname,
ids: ids.join('\n'),
classes: classes.join('\n'),
ids: ids,
classes: classes,
exceptions: domFilterer.exceptions,
cost: surveyCost
},

View File

@ -1054,14 +1054,8 @@ FilterContainer.prototype.retrieveGenericSelectors = function(request) {
for ( let type in this.lowlyGeneric ) {
let entry = this.lowlyGeneric[type];
let selectors = request[entry.canonical];
if ( typeof selectors !== 'string' ) { continue; }
let strEnd = selectors.length;
let sliceBeg = 0;
do {
let sliceEnd = selectors.indexOf('\n', sliceBeg);
if ( sliceEnd === -1 ) { sliceEnd = strEnd; }
let selector = selectors.slice(sliceBeg, sliceEnd);
sliceBeg = sliceEnd + 1;
if ( Array.isArray(selectors) === false ) { continue; }
for ( let selector of selectors ) {
if ( entry.simple.has(selector) === false ) { continue; }
let bucket = entry.complex.get(selector);
if ( bucket !== undefined ) {
@ -1080,7 +1074,7 @@ FilterContainer.prototype.retrieveGenericSelectors = function(request) {
simpleSelectors.add(selector);
}
}
} while ( sliceBeg < strEnd );
}
}
// Apply exceptions: it is the responsibility of the caller to provide