You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by te...@apache.org on 2009/07/14 11:13:45 UTC

svn commit: r793821 - in /harmony/enhanced/classlib/trunk/modules/luni/src: main/java/java/lang/String.java test/api/common/org/apache/harmony/luni/tests/java/lang/String2Test.java

Author: tellison
Date: Tue Jul 14 09:13:44 2009
New Revision: 793821

URL: http://svn.apache.org/viewvc?rev=793821&view=rev
Log:
Improve string equality performance.  Don't use general regionMatches call but in-line the char array comparison.

Modified:
    harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/String.java
    harmony/enhanced/classlib/trunk/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/lang/String2Test.java

Modified: harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/String.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/String.java?rev=793821&r1=793820&r2=793821&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/String.java (original)
+++ harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/String.java Tue Jul 14 09:13:44 2009
@@ -782,7 +782,12 @@
                     || (hashCode != s.hashCode && hashCode != 0 && s.hashCode != 0)) {
                 return false;
             }
-            return regionMatches(0, s, 0, count);
+            for (int i = 0; i < count; ++i) {
+                if (value[offset + i] != s.value[s.offset + i]) {
+                    return false;
+                }
+            }
+            return true;
         }
         return false;
     }

Modified: harmony/enhanced/classlib/trunk/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/lang/String2Test.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/lang/String2Test.java?rev=793821&r1=793820&r2=793821&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/lang/String2Test.java (original)
+++ harmony/enhanced/classlib/trunk/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/lang/String2Test.java Tue Jul 14 09:13:44 2009
@@ -321,8 +321,12 @@
      * @tests java.lang.String#equals(java.lang.Object)
      */
     public void test_equalsLjava_lang_Object() {
-        // Test for method boolean java.lang.String.equals(java.lang.Object)
-        assertTrue("String not equal", hw1.equals(hw2) && !(hw1.equals(comp11)));
+        assertEquals("String not equal", hw1, hw2);
+        assertEquals("Empty string equals check", "", "");
+        assertEquals("Null string equals check", (String)null, (String)null);
+        
+        assertFalse("Unequal strings reports as equal", hw1.equals(comp11));
+        assertFalse("Null string comparison failed", hw1.equals((String)null));        
     }
 
     /**