Commit f358a030 by Roman Storm Committed by Nicolás Venturo

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>
parent 8545c99f
...@@ -5,10 +5,10 @@ class MerkleTree { ...@@ -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 { ...@@ -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);
}); });
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment