[jbosscache-commits] JBoss Cache SVN: r6309 - in core/trunk/src/main/java/org/jboss/cache: lock and 1 other directory.
jbosscache-commits at lists.jboss.org
jbosscache-commits at lists.jboss.org
Wed Jul 16 13:15:15 EDT 2008
Author: manik.surtani at jboss.com
Date: 2008-07-16 13:15:15 -0400 (Wed, 16 Jul 2008)
New Revision: 6309
Modified:
core/trunk/src/main/java/org/jboss/cache/Fqn.java
core/trunk/src/main/java/org/jboss/cache/lock/MVCCLockManager.java
Log:
Improved hashcode
Modified: core/trunk/src/main/java/org/jboss/cache/Fqn.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/Fqn.java 2008-07-16 16:16:37 UTC (rev 6308)
+++ core/trunk/src/main/java/org/jboss/cache/Fqn.java 2008-07-16 17:15:15 UTC (rev 6309)
@@ -444,18 +444,12 @@
/**
* Calculates a hash code by summing the hash code of all elements.
*
- * @return a cached hashcode
+ * @return a calculated hashcode
*/
protected int calculateHashCode()
{
- int hashCode = 0;
- int count = 1;
- for (Object element : elements) hashCode += (element == null) ? 0 : element.hashCode() * count++;
-
- if (hashCode == 0)// fix degenerate case
- {
- hashCode = 0xFEED;
- }
+ int hashCode = 19;
+ for (Object o : elements) hashCode = 31 * hashCode + (o == null ? 0 : o.hashCode());
return hashCode;
}
Modified: core/trunk/src/main/java/org/jboss/cache/lock/MVCCLockManager.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/lock/MVCCLockManager.java 2008-07-16 16:16:37 UTC (rev 6308)
+++ core/trunk/src/main/java/org/jboss/cache/lock/MVCCLockManager.java 2008-07-16 17:15:15 UTC (rev 6309)
@@ -320,8 +320,7 @@
*/
final int hash(Fqn fqn)
{
- // TODO: 3.0.0: Find an efficient algorithm to ensure a proper spread of locks across Fqns.
- int h = fqn.toString().hashCode();
+ int h = fqn.hashCode();
h += ~(h << 9);
h ^= (h >>> 14);
h += (h << 4);
More information about the jbosscache-commits
mailing list