Review/comment needed for the new public java.util.Base64 class
Xueming Shen
xueming.shen at oracle.com
Sat Oct 13 17:23:51 UTC 2012
On 10/13/12 10:21 AM, Xueming Shen wrote:
>
> With moving some code piece around (moved those lookup table into
> En/Decoder)
> and some array access code tuning (with the hope of eliminating the
> array boundary
> access) in encode0(), it appears the hotspot now can better optimize
> the decoder
> loop for the -server mode for encoding. decode0 also get 10% +boost
> with simply
> moving in the lookup table.
>
> The latest version is at (decode0() vs decode1())
--> encode0() vs encode1())
encode0 is the latest/faster one. encode1 is the one in webrev.
-Sherman
>
> http://cr.openjdk.java.net/~sherman/4235519/Base64.java
>
> The latest scores is at
>
> http://cr.openjdk.java.net/~sherman/4235519/score2
>
> (compared to http://cr.openjdk.java.net/~sherman/4235519/score1)
>
> -Sherman
>
>
> On 10/11/12 11:38 PM, Xueming Shen wrote:
>>
>>> On 10/11/2012 02:43 AM, Stephen Colebourne wrote:
>>>
>>>> There are lots of other public base 64 implementations to
>>>> test/check against.
>>>> http://commons.apache.org/net/api-3.1/org/apache/commons/net/util/Base64.html
>>>>
>>>> http://www.cs.berkeley.edu/~jonah/bc/org/bouncycastle/util/encoders/Base64.html
>>>>
>>>> http://migbase64.sourceforge.net/ (claims to be fast)
>>>
>>
>> I did a quick performance check against migbase64 with the basic
>> base64 de/encoding
>> using this non-scientific benchmark.
>> http://cr.openjdk.java.net/~sherman/4235519/PermBase64.java
>>
>> Here is the scores
>> http://cr.openjdk.java.net/~sherman/4235519/scores
>>
>> It's a tie, j.u.Base64 wins the decoding, but needs some work on
>> encoding side.
>>
>> java -server PermBase64 200000 50
>> j.u.Base64.encode() : 1390212
>> migBase64.encode() : 720517
>> j.u.Base64.decode() : 1200642
>> migBase64.decode() : 2070015
>>
>> java -server PermBase64 200000 100
>> j.u.Base64.encode() : 1239407
>> migBase64.encode() : 740404
>> j.u.Base64.decode() : 1257092
>> migBase64.decode() : 2012910
>>
>> java -server PermBase64 200000 1000
>> j.u.Base64.encode() : 1062212
>> migBase64.encode() : 657342
>> j.u.Base64.decode() : 1133740
>> migBase64.decode() : 1930612
>>
>> java -client PermBase64 200000 50
>> j.u.Base64.encode() : 961331
>> migBase64.encode() : 875635
>> j.u.Base64.decode() : 1528790
>> migBase64.decode() : 2188473
>>
>> java -client PermBase64 200000 100
>> j.u.Base64.encode() : 966453
>> migBase64.encode() : 858082
>> j.u.Base64.decode() : 1459159
>> migBase64.decode() : 2115045
>>
>> java -client PermBase64 200000 1000
>> j.u.Base64.encode() : 954401
>> migBase64.encode() : 854903
>> j.u.Base64.decode() : 1444603
>> migBase64.decode() : 2038865
>>
>>
>
More information about the core-libs-dev
mailing list