Author: j16sdiz
Date: 2008-07-29 13:33:02 +0000 (Tue, 29 Jul 2008)
New Revision: 21475
Modified:
branches/saltedhashstore/freenet/src/freenet/store/saltedhash/SaltedHashFreenetStore.java
branches/saltedhashstore/freenet/src/freenet/support/BloomFilter.java
Log:
use MT instead of SHA256 for bloom filter, reduce cpu usage
Modified:
branches/saltedhashstore/freenet/src/freenet/store/saltedhash/SaltedHashFreenetStore.java
===================================================================
---
branches/saltedhashstore/freenet/src/freenet/store/saltedhash/SaltedHashFreenetStore.java
2008-07-29 12:51:56 UTC (rev 21474)
+++
branches/saltedhashstore/freenet/src/freenet/store/saltedhash/SaltedHashFreenetStore.java
2008-07-29 13:33:02 UTC (rev 21475)
@@ -902,7 +902,7 @@
if (shutdown)
return;
-
+
node.clientCore.alerts.register(new UserAlert() {
public String anchor() {
return "store-cleaner-" + name;
Modified: branches/saltedhashstore/freenet/src/freenet/support/BloomFilter.java
===================================================================
--- branches/saltedhashstore/freenet/src/freenet/support/BloomFilter.java
2008-07-29 12:51:56 UTC (rev 21474)
+++ branches/saltedhashstore/freenet/src/freenet/support/BloomFilter.java
2008-07-29 13:33:02 UTC (rev 21475)
@@ -2,11 +2,10 @@
import java.nio.ByteBuffer;
import java.nio.MappedByteBuffer;
-import java.security.MessageDigest;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
-import freenet.crypt.SHA256;
+import org.spaceroots.mantissa.random.MersenneTwister;
public abstract class BloomFilter {
protected ByteBuffer filter;
@@ -77,23 +76,10 @@
protected int[] getHashes(byte[] key) {
int[] hashes = new int[k];
- MessageDigest md = SHA256.getMessageDigest();
- try {
- byte[] lastDigest = key;
- ByteBuffer bf = ByteBuffer.wrap(lastDigest);
+ MersenneTwister mt = new MersenneTwister(key);
+ for (int i = 0; i < k; i++)
+ hashes[i] = mt.nextInt(length);
- for (int i = 0; i < k; i++) {
- if (bf.remaining() < 4) {
- lastDigest = md.digest(lastDigest);
- bf = ByteBuffer.wrap(lastDigest);
- }
-
- hashes[i] = (int) ((bf.getInt() &
Long.MAX_VALUE) % length);
- }
- } finally {
- SHA256.returnMessageDigest(md);
- }
-
return hashes;
}