Request for reviews (L): 6814842: Load shortening optimizations
Ulf Zibis
Ulf.Zibis at gmx.de
Fri May 8 10:01:16 PDT 2009
Am 08.05.2009 14:01, Christian Thalinger schrieb:
> On Fri, 2009-05-08 at 12:29 +0200, Ulf Zibis wrote:
>
>>
>> Results from my benchmark on JDK7 b51:
>> <https://java-nio-charset-enhanced.dev.java.net/source/browse/java-nio-charset-enhanced/trunk/test/DecoderBenchmark.java?rev=672&view=markup>
>>
>> time for (char)a: 1652 ms
>> time for (char)(a & 0xFF): 2772 ms
>>
>> IMHO (char)(a & 0xFF) should be faster, or at least as fast as (char)a,
>> because only basic LoadUB should be executed.
>>
>
> I already said that once, it's not the code the makes the second one
> slower, it's the register allocation.
Does that mean, that I should use (char)a to decode ASCII-bytes
[0x00..0x7F] and (char)(a & 0xFF) to decode ISO-8859-1-bytes
[0x00..0xFF] to have best performance? Using (char)(a & 0xFF) in general
would waste performance for only-ASCII-bytes (...but win for
ISO-8859-1-bytes, if using -XX:LoopUnrollLimit=1, see below).
> When running with:
>
> -XX:LoopUnrollLimit=1
>
Result:
time for (char)a: 2280 ms
time for (char)(a & 0xFF): 2284 ms
How should I interpret this?
In case of ISO-8859-1-bytes it's faster than without
-XX:LoopUnrollLimit=1, but slower in case of only-ASCII-bytes.
Which values are relevant for real world case? I'm not sure, which java
code to use for most fast charset decoders.
-Ulf
More information about the hotspot-compiler-dev
mailing list