Skip to content
Permalink
Browse files

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).
  • Loading branch information...
gorhill committed Dec 29, 2018
1 parent 4ce1796 commit f35dff2c9d9e2ee55c53b32767698ba46ca3c39b
Showing with 8 additions and 12 deletions.
  1. +5 −3 src/js/contentscript.js
  2. +3 −9 src/js/cosmetic-filtering.js
@@ -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
},
@@ -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

0 comments on commit f35dff2

Please sign in to comment.
You can’t perform that action at this time.