Skip to content

Commit c0e4b7d

Browse files
authored
Merge pull request #55 from gregorym/main
Improve dna uniqueness perf (big O)
2 parents 6208668 + 2df7b20 commit c0e4b7d

1 file changed

Lines changed: 10 additions & 10 deletions

File tree

src/main.js

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ const canvas = createCanvas(format.width, format.height);
2828
const ctx = canvas.getContext("2d");
2929
var metadataList = [];
3030
var attributesList = [];
31-
var dnaList = [];
31+
var dnaList = new Set();
32+
const DNA_DELIMITER = '-';
3233

3334
const buildSetup = () => {
3435
if (fs.existsSync(buildDir)) {
@@ -109,7 +110,7 @@ const drawBackground = () => {
109110
const addMetadata = (_dna, _edition) => {
110111
let dateTime = Date.now();
111112
let tempMetadata = {
112-
dna: sha1(_dna.join("")),
113+
dna: sha1(_dna),
113114
name: `#${_edition}`,
114115
description: description,
115116
image: `${baseUri}/${_edition}.png`,
@@ -145,10 +146,10 @@ const drawElement = (_renderObject) => {
145146
addAttributes(_renderObject);
146147
};
147148

148-
const constructLayerToDna = (_dna = [], _layers = []) => {
149+
const constructLayerToDna = (_dna = '', _layers = []) => {
149150
let mappedDnaToLayers = _layers.map((layer, index) => {
150151
let selectedElement = layer.elements.find(
151-
(e) => e.id == cleanDna(_dna[index])
152+
(e) => e.id == cleanDna(_dna.split(DNA_DELIMITER)[index])
152153
);
153154
return {
154155
name: layer.name,
@@ -160,9 +161,8 @@ const constructLayerToDna = (_dna = [], _layers = []) => {
160161
return mappedDnaToLayers;
161162
};
162163

163-
const isDnaUnique = (_DnaList = [], _dna = []) => {
164-
let foundDna = _DnaList.find((i) => i.join("") === _dna.join(""));
165-
return foundDna == undefined ? true : false;
164+
const isDnaUnique = (_DnaList = new Set(), _dna = '') => {
165+
return !_DnaList.has(_dna);
166166
};
167167

168168
const createDna = (_layers) => {
@@ -184,7 +184,7 @@ const createDna = (_layers) => {
184184
}
185185
}
186186
});
187-
return randNum;
187+
return randNum.join(DNA_DELIMITER);
188188
};
189189

190190
const writeMetaData = (_data) => {
@@ -269,11 +269,11 @@ const startCreating = async () => {
269269
saveMetaDataSingleFile(abstractedIndexes[0]);
270270
console.log(
271271
`Created edition: ${abstractedIndexes[0]}, with DNA: ${sha1(
272-
newDna.join("")
272+
newDna
273273
)}`
274274
);
275275
});
276-
dnaList.push(newDna);
276+
dnaList.add(newDna);
277277
editionCount++;
278278
abstractedIndexes.shift();
279279
} else {

0 commit comments

Comments
 (0)