20x performance for merkle tree lib (#1787)
* 20x performance for merkle tree lib * add semicolon * Update test/helpers/merkleTree.js Co-Authored-By: Nicolás Venturo <nicolas.venturo@gmail.com>
This commit is contained in:
committed by
Nicolás Venturo
parent
8545c99fb1
commit
f358a03043
@ -5,10 +5,10 @@ class MerkleTree {
|
|||||||
// Filter empty strings and hash elements
|
// Filter empty strings and hash elements
|
||||||
this.elements = elements.filter(el => el).map(el => keccak256(el));
|
this.elements = elements.filter(el => el).map(el => keccak256(el));
|
||||||
|
|
||||||
// Deduplicate elements
|
|
||||||
this.elements = this.bufDedup(this.elements);
|
|
||||||
// Sort elements
|
// Sort elements
|
||||||
this.elements.sort(Buffer.compare);
|
this.elements.sort(Buffer.compare);
|
||||||
|
// Deduplicate elements
|
||||||
|
this.elements = this.bufDedup(this.elements);
|
||||||
|
|
||||||
// Create layers
|
// Create layers
|
||||||
this.layers = this.getLayers(this.elements);
|
this.layers = this.getLayers(this.elements);
|
||||||
@ -113,7 +113,7 @@ class MerkleTree {
|
|||||||
|
|
||||||
bufDedup (elements) {
|
bufDedup (elements) {
|
||||||
return elements.filter((el, idx) => {
|
return elements.filter((el, idx) => {
|
||||||
return this.bufIndexOf(el, elements) === idx;
|
return idx === 0 || !elements[idx - 1].equals(el);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user