Perf: improve reject set dedupe worker performance

This commit is contained in:
SukkaW
2022-09-05 14:13:07 +08:00
parent 587505c88c
commit 61035df4a8
2 changed files with 27 additions and 11 deletions

View File

@@ -1,11 +1,12 @@
const { workerData } = require('piscina');
const { workerData, move } = require('piscina');
const len = workerData.length;
exports.dedupe = ({ chunk }) => {
const outputToBeRemoved = new Set();
module.exports = ({ chunk }) => {
const chunkLength = chunk.length;
const outputToBeRemoved = new Int32Array(chunkLength);
for (let i = 0, l = chunk.length; i < l; i++) {
for (let i = 0; i < chunkLength; i++) {
const domainFromInput = chunk[i];
for (let j = 0; j < len; j++) {
@@ -26,7 +27,7 @@ exports.dedupe = ({ chunk }) => {
}
if (shouldBeRemoved) {
outputToBeRemoved.add(domainFromInput);
outputToBeRemoved[i] = 1;
break;
}
}
@@ -34,12 +35,12 @@ exports.dedupe = ({ chunk }) => {
if (domainFromInput.length >= domainFromFullSet.length) {
if (domainFromInput.endsWith(domainFromFullSet)) {
outputToBeRemoved.add(domainFromInput);
outputToBeRemoved[i] = 1;
break;
}
}
}
}
return outputToBeRemoved;
return move(outputToBeRemoved);
};