Well, if you know that it is an array, you might check the compount type to be 
a primitive and in case it is, you might use == for the primitive types.

--------------- Weitergeleitete Nachricht (Anfang)

Betreff: svn commit: r897419 - 
/commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/builder/HashCodeBuilder.java
Absender: bayard-1odqgaof3lkdnm+yrof...@public.gmane.org
Datum: Sat, 09 Jan 2010 11:20:49 +0000
Newsgruppe: gmane.comp.jakarta.commons.scm

Author: bayard
Date: Sat Jan  9 11:20:49 2010
New Revision: 897419

URL: http://svn.apache.org/viewvc?rev=897419&view=rev
Log:
Performance improvement per Anthony Whitford in LANG-574. Check for isArray to 
short-circuit the 9 instanceof checks. Improves both non-arrays and Object[] 
in tests

Modified:
    
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/builder/HashCodeBuilder.java

Modified: 
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/builder/HashCodeBuilder.java
URL: 
http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/builder/HashCodeBuilder.java?rev=897419&r1=897418&r2=897419&view=diff
==============================================================================
--- 
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/builder/HashCodeBuilder.java
 
(original)
+++ 
commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/builder/HashCodeBuilder.java
 
Sat Jan  9 11:20:49 2010
@@ -861,6 +861,8 @@
             iTotal = iTotal * iConstant;
 
         } else {
+            Class clss = object.getClass();
+            if(clss.isArray()) {
                 // 'Switch' on type of array, to dispatch to the correct 
handler
                 // This handles multi dimensional arrays
                 if (object instanceof long[]) {
@@ -879,12 +881,13 @@
                     append((float[]) object);
                 } else if (object instanceof boolean[]) {
                     append((boolean[]) object);
-                } else if (object instanceof Object[]) {
+                } else {
                     // Not an array of primitives
                     append((Object[]) object);
-                } else {
-                    iTotal = iTotal * iConstant + object.hashCode();
                 }
+            } else {
+                iTotal = iTotal * iConstant + object.hashCode();
+            }
         }
         return this;
     }



--------------- Weitergeleitete Nachricht (Ende)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to