Need reviewer for forward port of 6815768 (File.getXXXSpace) and 6815768 (String.hashCode)

Dmitry Nadezhin dmitry.nadezhin at gmail.com
Fri Feb 26 11:52:26 UTC 2010


I found two alternatives in the link
http://mail.openjdk.java.net/pipermail/coin-dev/2009-December/002618.html

The first alternative

int equalByHashThreshold = 2;

public boolean equals(Object anObject) {
  if (this == anObject) {
    return true;
  }
  if (anObject instanceof String) {

    String anotherString = (String)anObject;
    int n = count;
    if (n == anotherString.count &&
        (equalByHashThreshold == 0 || --equalByHashThreshold == 0) &&
        (anotherString.equalByHashThreshold == 0 ||
--anotherString.equalByHashThreshold == 0) &&

        hash() == anotherString.hash()) {
[snipped]
    }
  }
  return false;
}


will say that
"A".equals("A") == false
because body of if statement will not be executed

The second alternative

public int hashCode() {
  int h = hash;
  if (h == 0 || --h == 0) {
    int off = offset;
    char val[] = value;
    int len = count;


    for (int i = 0; i < len; i++) {
      h = 31*h + val[off++];
    }
    hash = h;
  }
  return h;
}

will return sequentially

"A".hashCode() == 65
"A".hashCode() == 64
"A".hashCode() == 64
. . .

I guess that you mean something else.

  -Dima

On Fri, Feb 26, 2010 at 1:19 PM, Ulf Zibis <Ulf.Zibis at gmx.de> wrote:

> Have you seen, that there are some chances to make String#equals little
> faster too:
> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6912520
>
> -Ulf
>
>
> Am 25.02.2010 23:07, schrieb Alan Bateman:
>
>> Kelly O'Hair wrote:
>>
>>> Yup.  My eyes must be tired, I didn't see that. :^(
>>>
>> Too many repositories in the air at the same time. The webrev has been
>> refreshed. Thanks Ulf.
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/core-libs-dev/attachments/20100226/c83bbc7a/attachment.html>


More information about the core-libs-dev mailing list