parent
8ef22ab1bd
commit
97334e8621
@ -185,7 +185,7 @@ public class CalculateAverage_iziamos {
|
|||||||
|
|
||||||
byte b = UNSAFE.getByte(pointer);
|
byte b = UNSAFE.getByte(pointer);
|
||||||
for (; b != ';'; ++strLen, b = UNSAFE.getByte(pointer + strLen)) {
|
for (; b != ';'; ++strLen, b = UNSAFE.getByte(pointer + strLen)) {
|
||||||
hash += b << strLen;
|
hash = 31 * hash + b;
|
||||||
}
|
}
|
||||||
pointer += strLen + 1;
|
pointer += strLen + 1;
|
||||||
|
|
||||||
@ -351,22 +351,25 @@ public class CalculateAverage_iziamos {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean stringEquals(final long thisNameAddress, final int thisStringLength, final long otherNameAddress, final long otherNameLength) {
|
private static boolean stringEquals(final long thisNameAddress,
|
||||||
|
final int thisStringLength,
|
||||||
|
final long otherNameAddress,
|
||||||
|
final long otherNameLength) {
|
||||||
if (thisStringLength != otherNameLength) {
|
if (thisStringLength != otherNameLength) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (; i < thisStringLength - 3; i += 4) {
|
for (; i < thisStringLength - 7; i += 8) {
|
||||||
if (UNSAFE.getInt(thisNameAddress + i) != UNSAFE.getInt(otherNameAddress + i)) {
|
if (UNSAFE.getLong(thisNameAddress + i) != UNSAFE.getLong(otherNameAddress + i)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final int remainingToCheck = thisStringLength - i;
|
final long remainingToCheck = thisStringLength - i;
|
||||||
final int finalBytesMask = ((1 << remainingToCheck * 8)) - 1;
|
final long finalBytesMask = ((1L << remainingToCheck * 8)) - 1;
|
||||||
final int thisLastWord = UNSAFE.getInt(thisNameAddress + i);
|
final long thisLastWord = UNSAFE.getLong(thisNameAddress + i);
|
||||||
final int otherLastWord = UNSAFE.getInt(otherNameAddress + i);
|
final long otherLastWord = UNSAFE.getLong(otherNameAddress + i);
|
||||||
|
|
||||||
return 0 == ((thisLastWord ^ otherLastWord) & finalBytesMask);
|
return 0 == ((thisLastWord ^ otherLastWord) & finalBytesMask);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user