Re: hg: jdk7/tl/jdk: 6642323: Speeding up Single Byte Decoders; ...

2008-12-15 Thread Ulf Zibis

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; ...

2008-12-15 Thread Ulf Zibis

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