Review/comment needed for the new public java.util.Base64 class (original) (raw)

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