RFR(S): 8249198: Faster Math.signum(fp) for positive and negative numbers
Dmitry Chuyko
dmitry.chuyko at bell-sw.com
Fri Jul 10 19:29:04 UTC 2020
Joe, thanks for taking a look on that.
Would something like "Here d is either (signed) zero or NaN (JLS
15.20.1)" make more sense?
-Dmitry
On 7/10/20 10:06 PM, Joe Darcy wrote:
> Hello,
>
> The comment
>
> + // NaN is here by JLS 15.20.1
>
> is not correct; either NaN or (signed) zero is present at that point
> in the code.
>
> -Joe
>
> On 7/10/2020 11:11 AM, Dmitry Chuyko wrote:
>> Hello,
>>
>> Please review a small change in Math.signum(double d) and
>> Math.signum(float f) that improves performance for positive and
>> negative numbers.
>>
>> Current version first checks if the number is NaN or zero, and for
>> all other numbers it extracts sign bit and constructs fp result. That
>> makes all regular numbers case ~1.2-1.5x slower than two special
>> number cases.
>>
>> Improved version checks for regular number cases first, and does not
>> use bit extraction. For positive and negative double numbers
>> improvement is ~1.31-1.47x, for floats it is 1.06-1.46x.
>> Micro-benchmark results are provided for tiered C2 on x86_64 and
>> aarch64. For NaN and zero we see ~1.00-1.26x slowdown in same
>> conditions.
>>
>> Please find benchmarks and results in the webrev.
>>
>> rfe: https://bugs.openjdk.java.net/browse/JDK-8249198
>>
>> webrev: http://cr.openjdk.java.net/~dchuyko/8249198/webrev.00/
>>
>> results:
>> http://cr.openjdk.java.net/~dchuyko/8249198/webrev.00/results.txt
>>
>> testing: JCK tests, jtreg tests on different platforms.
>>
>> -Dmitry
>>
More information about the core-libs-dev
mailing list