[
http://issues.apache.org/jira/browse/LUCENE-467?page=comments#action_12357920 ]
Yonik Seeley commented on LUCENE-467:
-------------------------------------
> How fast can you make: public byte floatToByte(float f, int numMantissaBits);
With Java5 and -server -Xbatch, just as fast as the specialized version! That
server JVM is amazing!
With Java5 -client, it's 60% slower though...
Still this code might be good to keep around for double checking
implementations.
public static byte floatToByte(float f, int numMantissaBits) {
int rshift = 24-numMantissaBits; // 21 in old func
int maxexp = 0xff >> numMantissaBits; // 31 in old func
int zeroexp = 0xff >> (numMantissaBits+1); // 15 in old func
// int overflowexp = 0x100 >> numMantissaBits; // 32 in old func
int overflowexp = maxexp+1;
int bits = Float.floatToRawIntBits(f);
int smallfloat = bits >> rshift;
if (smallfloat < (63-zeroexp)<<numMantissaBits) {
return (bits<=0) ? (byte)0 : (byte)1; // 0 or underflow
} else if (smallfloat >= (63-zeroexp+overflowexp)<<numMantissaBits) {
return -1;
} else {
return (byte)(smallfloat - ((63-zeroexp)<<numMantissaBits));
}
}
public byte floatToByte(float f) {
return floatToByte(f,3);
}
> Use Float.floatToRawIntBits over Float.floatToIntBits
> -----------------------------------------------------
>
> Key: LUCENE-467
> URL: http://issues.apache.org/jira/browse/LUCENE-467
> Project: Lucene - Java
> Type: Improvement
> Components: Other
> Versions: 1.9
> Reporter: Yonik Seeley
> Priority: Minor
>
> Copied From my Email:
> Float.floatToRawIntBits (in Java1.4) gives the raw float bits without
> normalization (like *(int*)&floatvar would in C). Since it doesn't do
> normalization of NaN values, it's faster (and hopefully optimized to a
> simple inline machine instruction by the JVM).
> On my Pentium4, using floatToRawIntBits is over 5 times as fast as
> floatToIntBits.
> That can really add up in something like Similarity.floatToByte() for
> encoding norms, especially if used as a way to compress an array of
> float during query time as suggested by Doug.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]