Avoid double Map search
This commit is contained in:
parent
dfd2e26c6e
commit
31fddb591b
|
@ -7,18 +7,16 @@ import java.security.MessageDigest;
|
||||||
import java.security.NoSuchAlgorithmException;
|
import java.security.NoSuchAlgorithmException;
|
||||||
|
|
||||||
import org.ethereum.db.ByteArrayWrapper;
|
import org.ethereum.db.ByteArrayWrapper;
|
||||||
import org.ethereum.util.ByteUtil;
|
|
||||||
import org.ethereum.util.RLP;
|
import org.ethereum.util.RLP;
|
||||||
import org.ethereum.util.Utils;
|
import org.ethereum.util.Utils;
|
||||||
import org.spongycastle.util.encoders.Hex;
|
import org.spongycastle.util.encoders.Hex;
|
||||||
|
|
||||||
import org.ethereum.util.LRUMap;
|
import org.ethereum.util.LRUMap;
|
||||||
|
|
||||||
public class HashUtil {
|
public class HashUtil {
|
||||||
|
|
||||||
private static final int MAX_ENTRIES = 1000; // Should contain most commonly hashed values
|
private static final int MAX_ENTRIES = 100; // Should contain most commonly hashed values
|
||||||
private static LRUMap<ByteArrayWrapper, byte[]> sha3Cache = new LRUMap<>(0, MAX_ENTRIES);
|
private static LRUMap<ByteArrayWrapper, byte[]> sha3Cache = new LRUMap<>(0, MAX_ENTRIES);
|
||||||
public static final byte[] EMPTY_DATA_HASH = HashUtil.sha3(new byte[0]);
|
public static final byte[] EMPTY_DATA_HASH = Hex.decode("c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470");
|
||||||
|
|
||||||
private static final MessageDigest sha256digest;
|
private static final MessageDigest sha256digest;
|
||||||
|
|
||||||
|
@ -35,12 +33,13 @@ public class HashUtil {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static byte[] sha3(byte[] input) {
|
public static byte[] sha3(byte[] input) {
|
||||||
ByteArrayWrapper inputByteArray = new ByteArrayWrapper(input);
|
ByteArrayWrapper inputByteArray = new ByteArrayWrapper(input);
|
||||||
if(sha3Cache.keySet().contains(inputByteArray))
|
byte[] result = sha3Cache.get(inputByteArray);
|
||||||
return sha3Cache.get(inputByteArray);
|
if(result != null)
|
||||||
byte[] result = SHA3Helper.sha3(input);
|
return result;
|
||||||
sha3Cache.put(inputByteArray, result);
|
result = SHA3Helper.sha3(input);
|
||||||
return result;
|
sha3Cache.put(inputByteArray, result);
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -62,7 +61,7 @@ public class HashUtil {
|
||||||
|
|
||||||
byte[] encSender = RLP.encodeElement(addr);
|
byte[] encSender = RLP.encodeElement(addr);
|
||||||
byte[] encNonce = RLP.encodeElement(nonce);
|
byte[] encNonce = RLP.encodeElement(nonce);
|
||||||
byte[] newAddress = HashUtil.sha3omit12(RLP.encodeList(encSender, encNonce));
|
byte[] newAddress = sha3omit12(RLP.encodeList(encSender, encNonce));
|
||||||
|
|
||||||
return newAddress;
|
return newAddress;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue