Review/comment needed for the new public java.util.Base64 class

Xueming Shen xueming.shen at oracle.com
Thu Oct 18 21:45:31 UTC 2012


On 10/18/2012 07:43 AM, Alan Bateman wrote:
> On 18/10/2012 03:10, Xueming Shen wrote:
>> Hi
>>
>> Webrev has been updated with following changes
>>
>> (1) added a pair of en/decode(ByteBuffer src, ByteBuffer dst) methods
>> (2) some minor spec clarification regarding the "end of decoding"
>> (3) performance tuning.
>>
>> webrev:
>> http://cr.openjdk.java.net/~sherman/4235519/webrev
>>
>> some performance scores:
>> http://cr.openjdk.java.net/~sherman/4235519/score3
>>
>> -Sherman
> Have you done any performance tuning on the new methods that 
> encode/decode into an existing ByteBuffer? Just wondering as the 
> direct buffer case seems more expensive that I would expect. It would 
> be interesting to see using the put(int,byte) and fixing up the 
> position at the end would help. It might also be something to look at 
> with the compiler folks.

get(index) and put(index, byte) do help, see 20%+ improvement.

sherman at sherman-linux:~/Workspace/jdk8/test/java/util/Base64$ java 
PermBase64 200000 1000
  j.u.Base64.encode(ba)      : 702000
  j.u.Base64.encode(bb)      : 690024
  j.u.Base64.encode(bb, bb)  : 910582
  j.u.Base64.encode(bb, bb)-D: 1198606
   migBase64.encode(ba)      : 661271
------------------
  j.u.Base64.decode(ba)      : 797152
  j.u.Base64.decode(bb)      : 802968
  j.u.Base64.decode(bb, bb)  : 999577
  j.u.Base64.decode(bb, bb)-D: 1472003
   migBase64.decode(ba)      : 1458450

webrev has been updated accordingly. Now implementations of
de/encodeArray and de/encodeBuffer are identical except the
access operation.

-Sherman




More information about the core-libs-dev mailing list