On 04/11/14 08:19, Claude Warren wrote:
Andy,

You might consider caching the hash code once it is calculated.  I assume
you use this object in hash maps or hash sets where the hash code needs to
be retrieve many times - O(log(n)?  per operation.  In this case caching
may show a performance improvement.

Claude

What is the best idiom for doing that? I've done it before caching to a long so a MAX_VALUE is outside the range of a hash

This class is not performance critical. It will be used briefly when creating TDB datasets. Actually, it's unlikely to be store in hash XYZs. Except for the (short <=4) arrays, the operations are quite cheap.

        Andy


On Mon, Nov 3, 2014 at 8:24 PM, <[email protected]> wrote:

Repository: jena
Updated Branches:
   refs/heads/master 1f2642ad1 -> be8f0aea6


hashCode and .equals (auto-generated)

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/be8f0aea
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/be8f0aea
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/be8f0aea

Branch: refs/heads/master
Commit: be8f0aea68df5caecc287ca612d7af00231d553f
Parents: 1f2642a
Author: Andy Seaborne <[email protected]>
Authored: Mon Nov 3 20:24:30 2014 +0000
Committer: Andy Seaborne <[email protected]>
Committed: Mon Nov 3 20:24:30 2014 +0000

----------------------------------------------------------------------
  .../com/hp/hpl/jena/tdb/setup/StoreParams.java  | 99 ++++++++++++++++++++
  1 file changed, 99 insertions(+)
----------------------------------------------------------------------



http://git-wip-us.apache.org/repos/asf/jena/blob/be8f0aea/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java
----------------------------------------------------------------------
diff --git
a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java
b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java
index 63fdef5..7c1829b 100644
--- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java
+++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java
@@ -18,6 +18,8 @@

  package com.hp.hpl.jena.tdb.setup;

+import java.util.Arrays ;
+
  import org.apache.jena.atlas.lib.StrUtils ;

  import com.hp.hpl.jena.tdb.base.block.FileMode ;
@@ -207,5 +209,102 @@ public class StoreParams implements IndexParams
          buff.append(String.format("%-20s   %s\n", name, value)) ;
      }

+    @Override
+    public int hashCode() {
+        final int prime = 31 ;
+        int result = 1 ;
+        result = prime * result + Node2NodeIdCacheSize ;
+        result = prime * result + NodeId2NodeCacheSize ;
+        result = prime * result + NodeMissCacheSize ;
+        result = prime * result + blockReadCacheSize ;
+        result = prime * result + blockSize ;
+        result = prime * result + blockWriteCacheSize ;
+        result = prime * result + ((fileMode == null) ? 0 :
fileMode.hashCode()) ;
+        result = prime * result + ((indexId2Node == null) ? 0 :
indexId2Node.hashCode()) ;
+        result = prime * result + ((indexNode2Id == null) ? 0 :
indexNode2Id.hashCode()) ;
+        result = prime * result + ((indexPrefix == null) ? 0 :
indexPrefix.hashCode()) ;
+        result = prime * result + ((prefixId2Node == null) ? 0 :
prefixId2Node.hashCode()) ;
+        result = prime * result + Arrays.hashCode(prefixIndexes) ;
+        result = prime * result + ((prefixNode2Id == null) ? 0 :
prefixNode2Id.hashCode()) ;
+        result = prime * result + ((primaryIndexPrefix == null) ? 0 :
primaryIndexPrefix.hashCode()) ;
+        result = prime * result + ((primaryIndexQuads == null) ? 0 :
primaryIndexQuads.hashCode()) ;
+        result = prime * result + ((primaryIndexTriples == null) ? 0 :
primaryIndexTriples.hashCode()) ;
+        result = prime * result + Arrays.hashCode(quadIndexes) ;
+        result = prime * result + Arrays.hashCode(tripleIndexes) ;
+        return result ;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if ( this == obj )
+            return true ;
+        if ( obj == null )
+            return false ;
+        if ( getClass() != obj.getClass() )
+            return false ;
+        StoreParams other = (StoreParams)obj ;
+        if ( Node2NodeIdCacheSize != other.Node2NodeIdCacheSize )
+            return false ;
+        if ( NodeId2NodeCacheSize != other.NodeId2NodeCacheSize )
+            return false ;
+        if ( NodeMissCacheSize != other.NodeMissCacheSize )
+            return false ;
+        if ( blockReadCacheSize != other.blockReadCacheSize )
+            return false ;
+        if ( blockSize != other.blockSize )
+            return false ;
+        if ( blockWriteCacheSize != other.blockWriteCacheSize )
+            return false ;
+        if ( fileMode != other.fileMode )
+            return false ;
+        if ( indexId2Node == null ) {
+            if ( other.indexId2Node != null )
+                return false ;
+        } else if ( !indexId2Node.equals(other.indexId2Node) )
+            return false ;
+        if ( indexNode2Id == null ) {
+            if ( other.indexNode2Id != null )
+                return false ;
+        } else if ( !indexNode2Id.equals(other.indexNode2Id) )
+            return false ;
+        if ( indexPrefix == null ) {
+            if ( other.indexPrefix != null )
+                return false ;
+        } else if ( !indexPrefix.equals(other.indexPrefix) )
+            return false ;
+        if ( prefixId2Node == null ) {
+            if ( other.prefixId2Node != null )
+                return false ;
+        } else if ( !prefixId2Node.equals(other.prefixId2Node) )
+            return false ;
+        if ( !Arrays.equals(prefixIndexes, other.prefixIndexes) )
+            return false ;
+        if ( prefixNode2Id == null ) {
+            if ( other.prefixNode2Id != null )
+                return false ;
+        } else if ( !prefixNode2Id.equals(other.prefixNode2Id) )
+            return false ;
+        if ( primaryIndexPrefix == null ) {
+            if ( other.primaryIndexPrefix != null )
+                return false ;
+        } else if ( !primaryIndexPrefix.equals(other.primaryIndexPrefix) )
+            return false ;
+        if ( primaryIndexQuads == null ) {
+            if ( other.primaryIndexQuads != null )
+                return false ;
+        } else if ( !primaryIndexQuads.equals(other.primaryIndexQuads) )
+            return false ;
+        if ( primaryIndexTriples == null ) {
+            if ( other.primaryIndexTriples != null )
+                return false ;
+        } else if (
!primaryIndexTriples.equals(other.primaryIndexTriples) )
+            return false ;
+        if ( !Arrays.equals(quadIndexes, other.quadIndexes) )
+            return false ;
+        if ( !Arrays.equals(tripleIndexes, other.tripleIndexes) )
+            return false ;
+        return true ;
+    }
+
  }






Reply via email to