Re: hg: jdk7/tl/jdk: 6642323: Speeding up Single Byte Decoders; ...
Maybe little faster, especially for short strings: private CoderResult decodeArrayLoop(ByteBuffer src, CharBuffer dst) { byte[] sa = src.array(); int sp = src.arrayOffset() + src.position(); int sr = src.remaining(); // faster than ... src.arrayOffset() + src.limit() char[] da = dst.array(); int dp = dst.arrayOffset() + dst.position(); int dr = dst.remaining(); // dl is never used for (int sl = sp + (sr <= dr ? sr : dr); sp < sl; sp++, dp++) if ((da[dp] = decode(sa[sp])) == UNMAPPABLE_DECODING) return withResult(CoderResult.unmappableForLength(1), src, sp, dst, dp); return withResult(sr <= dr ? CoderResult.UNDERFLOW : CoderResult.OVERFLOW, src, sp, dst, dp); } Regards, Ulf Am 10.12.2008 23:10, xueming.s...@sun.com schrieb: Changeset: b89ba9a6d9a6 Author:sherman Date: 2008-12-10 14:03 -0800 URL: http://hg.openjdk.java.net/jdk7/tl/jdk/rev/b89ba9a6d9a6 6642323: Speeding up Single Byte Decoders 6642328: Speeding up Single Byte Encoders Summary: re-implementation of mapping based sbcs charts Reviewed-by: alanb
Re: hg: jdk7/tl/jdk: 6642323: Speeding up Single Byte Decoders; ...
Maybe: for (int sl = sp + (sr <= dr ? sr : dr); sp != sl; sp++, dp++) is little more faster than: for (int sl = sp + (sr <= dr ? sr : dr); sp < sl; sp++, dp++) -Ulf Am 15.12.2008 21:56, Ulf Zibis schrieb: Maybe little faster, especially for short strings: private CoderResult decodeArrayLoop(ByteBuffer src, CharBuffer dst) { byte[] sa = src.array(); int sp = src.arrayOffset() + src.position(); int sr = src.remaining(); // faster than ... src.arrayOffset() + src.limit() char[] da = dst.array(); int dp = dst.arrayOffset() + dst.position(); int dr = dst.remaining(); // dl is never used for (int sl = sp + (sr <= dr ? sr : dr); sp < sl; sp++, dp++) if ((da[dp] = decode(sa[sp])) == UNMAPPABLE_DECODING) return withResult(CoderResult.unmappableForLength(1), src, sp, dst, dp); return withResult(sr <= dr ? CoderResult.UNDERFLOW : CoderResult.OVERFLOW, src, sp, dst, dp); } Regards, Ulf