Author: markt Date: Thu Jan 28 14:04:00 2016 New Revision: 1727355 URL: http://svn.apache.org/viewvc?rev=1727355&view=rev Log: Switch OutputBuffer to a local Map of C2BConvertors. Loading testing with HTTP/2 and default Tomcat home page suggests an improvement of a few percent in throughput.
Modified: tomcat/trunk/java/org/apache/catalina/connector/OutputBuffer.java Modified: tomcat/trunk/java/org/apache/catalina/connector/OutputBuffer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/OutputBuffer.java?rev=1727355&r1=1727354&r2=1727355&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/connector/OutputBuffer.java (original) +++ tomcat/trunk/java/org/apache/catalina/connector/OutputBuffer.java Thu Jan 28 14:04:00 2016 @@ -22,7 +22,8 @@ import java.nio.charset.Charset; import java.security.AccessController; import java.security.PrivilegedActionException; import java.security.PrivilegedExceptionAction; -import java.util.concurrent.ConcurrentHashMap; +import java.util.HashMap; +import java.util.Map; import javax.servlet.WriteListener; import javax.servlet.http.HttpServletResponse; @@ -34,7 +35,6 @@ import org.apache.tomcat.util.buf.B2CCon import org.apache.tomcat.util.buf.ByteChunk; import org.apache.tomcat.util.buf.C2BConverter; import org.apache.tomcat.util.buf.CharChunk; -import org.apache.tomcat.util.collections.SynchronizedStack; import org.apache.tomcat.util.res.StringManager; /** @@ -55,8 +55,7 @@ public class OutputBuffer extends Writer /** * Encoder cache. */ - private static final ConcurrentHashMap<Charset, SynchronizedStack<C2BConverter>> encoders = - new ConcurrentHashMap<>(); + private final Map<Charset, C2BConverter> encoders = new HashMap<>(); // ----------------------------------------------------- Instance Variables @@ -233,7 +232,6 @@ public class OutputBuffer extends Writer if (conv != null) { conv.recycle(); - encoders.get(conv.getCharset()).push(conv); conv = null; } @@ -560,16 +558,11 @@ public class OutputBuffer extends Writer } final Charset charset = getCharset(enc); - SynchronizedStack<C2BConverter> stack = encoders.get(charset); - if (stack == null) { - stack = new SynchronizedStack<>(); - encoders.putIfAbsent(charset, stack); - stack = encoders.get(charset); - } - conv = stack.pop(); + conv = encoders.get(charset); if (conv == null) { conv = createConverter(charset); + encoders.put(charset, conv); } } @@ -659,7 +652,6 @@ public class OutputBuffer extends Writer if (resetWriterStreamFlags) { if (conv != null) { conv.recycle(); - encoders.get(conv.getCharset()).push(conv); } conv = null; enc = null; --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org