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;
        }



Reply via email to