You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ap...@apache.org on 2007/05/10 16:48:10 UTC
svn commit: r536876 -
/harmony/enhanced/classlib/trunk/modules/nio_char/src/main/java/java/nio/charset/Charset.java
Author: apetrenko
Date: Thu May 10 07:48:09 2007
New Revision: 536876
URL: http://svn.apache.org/viewvc?view=rev&rev=536876
Log:
Patch for HARMONY-3493 "[classlib][nio]java.nio.Charset.encode()/decode() performance improvement."
Modified:
harmony/enhanced/classlib/trunk/modules/nio_char/src/main/java/java/nio/charset/Charset.java
Modified: harmony/enhanced/classlib/trunk/modules/nio_char/src/main/java/java/nio/charset/Charset.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/nio_char/src/main/java/java/nio/charset/Charset.java?view=diff&rev=536876&r1=536875&r2=536876
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/nio_char/src/main/java/java/nio/charset/Charset.java (original)
+++ harmony/enhanced/classlib/trunk/modules/nio_char/src/main/java/java/nio/charset/Charset.java Thu May 10 07:48:09 2007
@@ -133,6 +133,8 @@
// cached CharsetEncoder table
private static HashMap<String, CharsetEncoder> cachedCharsetEncoderTable = new HashMap<String, CharsetEncoder>();
+ private CharsetEncoder cachedEncoder = null;
+ private CharsetDecoder cachedDecoder = null;
/*
* -------------------------------------------------------------------
* Global initialization
@@ -672,10 +674,13 @@
* @return the result of the encoding
*/
synchronized public final ByteBuffer encode(CharBuffer buffer) {
- CharsetEncoder e = getCachedCharsetEncoder(canonicalName);
+ if (cachedEncoder == null) {
+ cachedEncoder = getCachedCharsetEncoder(canonicalName);
+ }
+
try {
- synchronized (e) {
- return e.encode(buffer);
+ synchronized (cachedEncoder) {
+ return cachedEncoder.encode(buffer);
}
} catch (CharacterCodingException ex) {
throw new Error(ex.getMessage(), ex);
@@ -727,10 +732,13 @@
* @return a character buffer containing the output of the decoding
*/
public final CharBuffer decode(ByteBuffer buffer) {
- CharsetDecoder d = getCachedCharsetDecoder(canonicalName);
+ if (cachedDecoder == null) {
+ cachedDecoder = getCachedCharsetDecoder(canonicalName);
+ }
+
try {
- synchronized (d) {
- return d.decode(buffer);
+ synchronized (cachedDecoder) {
+ return cachedDecoder.decode(buffer);
}
} catch (CharacterCodingException ex) {
throw new Error(ex.getMessage(), ex);