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:
Roman Storm
2019-06-12 10:59:52 -07:00
committed by Nicolás Venturo
parent 8545c99fb1
commit f358a03043

View File

@ -5,10 +5,10 @@ class MerkleTree {
// Filter empty strings and hash elements
this.elements = elements.filter(el => el).map(el => keccak256(el));
// Deduplicate elements
this.elements = this.bufDedup(this.elements);
// Sort elements
this.elements.sort(Buffer.compare);
// Deduplicate elements
this.elements = this.bufDedup(this.elements);
// Create layers
this.layers = this.getLayers(this.elements);
@ -113,7 +113,7 @@ class MerkleTree {
bufDedup (elements) {
return elements.filter((el, idx) => {
return this.bufIndexOf(el, elements) === idx;
return idx === 0 || !elements[idx - 1].equals(el);
});
}