Hi Tee,<br><br>I tried to test the performance of Netty(3.2alpha3) and Tomcat, and dispointedly found that Netty is not much faster than tomcat as I expected.<br><br>The result is here,<br><a href="http://jiming.javaeye.com/blog/618026">http://jiming.javaeye.com/blog/618026</a><br>
<br>Today, I profiled the netty example by JProfiler and found that it is possible to improve the performance.<br>following is partial result of JProfiler, wish could be useful.<br><br>StackTrace of havest method one:<br>
37.7% - 37,486 ms - 10,001 inv. org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream<br> 37.7% - 37,435 ms - 10,001 inv. org.jboss.netty.example.http.snoop.HttpRequestHandler.messageReceived<br> 36.8% - 36,538 ms - 10,001 inv. org.jboss.netty.example.http.snoop.HttpRequestHandler.writeResponse<br>
20.4% - 20,253 ms - 10,001 inv. org.jboss.netty.channel.AbstractChannel.write<br> 20.3% - 20,198 ms - 10,001 inv. org.jboss.netty.channel.Channels.write<br> 20.3% - 20,156 ms - 10,001 inv. org.jboss.netty.channel.Channels.write<br>
19.9% - 19,733 ms - 10,001 inv. org.jboss.netty.channel.DefaultChannelPipeline.sendDownstream<br> 19.7% - 19,546 ms - 10,001 inv. org.jboss.netty.channel.DefaultChannelPipeline.sendDownstream<br> 19.6% - 19,453 ms - 10,001 inv. org.jboss.netty.handler.codec.oneone.OneToOneEncoder.handleDownstream<br>
11.7% - 11,595 ms - 10,001 inv. org.jboss.netty.handler.codec.http.HttpMessageEncoder.encode<br> 3.7% - 3,667 ms - 10,001 inv. org.jboss.netty.handler.codec.http.HttpResponseEncoder.encodeInitialLine<br> 3.4% - 3,337 ms - 10,001 inv. org.jboss.netty.handler.codec.http.HttpMessageEncoder.encodeHeaders<br>
2.3% - 2,311 ms - 10,001 inv. org.jboss.netty.buffer.ChannelBuffers.wrappedBuffer<br> 0.7% - 738 ms - 20,002 inv. org.jboss.netty.buffer.DynamicChannelBuffer.writeByte<br> 0.7% - 662 ms - 10,001 inv. org.jboss.netty.buffer.ChannelBuffers.dynamicBuffer<br>
0.3% - 273 ms - 10,001 inv. org.jboss.netty.handler.codec.http.HttpCodecUtil.isTransferEncodingChunked<br> 7.6% - 7,560 ms - 10,001 inv. org.jboss.netty.channel.Channels.write<br> 12.1% - 11,971 ms - 10,001 inv. org.jboss.netty.channel.DefaultChannelFuture.addListener<br>
1.7% - 1,665 ms - 10,001 inv. org.jboss.netty.buffer.ChannelBuffers.copiedBuffer<br> 0.7% - 662 ms - 10,001 inv. org.jboss.netty.handler.codec.http.DefaultHttpMessage.setHeader<br> 0.6% - 557 ms - 10,001 inv. org.jboss.netty.handler.codec.http.DefaultHttpMessage.setContent<br>
0.5% - 506 ms - 10,001 inv. org.jboss.netty.handler.codec.http.HttpHeaders.isKeepAlive<br> 0.4% - 349 ms - 10,001 inv. org.jboss.netty.handler.codec.http.DefaultHttpMessage.getHeader<br> 0.3% - 257 ms - 10,001 inv. org.jboss.netty.handler.codec.http.DefaultHttpResponse.<init><br>
<br>StackTrace of havest method two:<br> 34.9% - 34,613 ms - 10,001 inv. org.jboss.netty.handler.codec.http.HttpMessageDecoder.decode<br> 34.8% - 34,562 ms - 10,001 inv. org.jboss.netty.handler.codec.http.HttpMessageDecoder.decode<br>
26.0% - 25,807 ms - 10,001 inv. org.jboss.netty.handler.codec.http.HttpMessageDecoder.readHeaders<br> 21.2% - 21,087 ms - 40,004 inv. org.jboss.netty.handler.codec.http.HttpMessageDecoder.readHeader<br> 19.2% - 19,087 ms - 770,077 inv. org.jboss.netty.handler.codec.replay.ReplayingDecoderBuffer.readByte<br>
8.8% - 8,718 ms - 770,077 inv. org.jboss.netty.buffer.AbstractChannelBuffer.readByte<br> 5.4% - 5,318 ms - 770,077 inv. org.jboss.netty.buffer.DynamicChannelBuffer.getByte<br> 1.8% - 1,797 ms - 770,077 inv. org.jboss.netty.buffer.HeapChannelBuffer.getByte<br>
5.1% - 5,102 ms - 770,077 inv. org.jboss.netty.handler.codec.replay.ReplayingDecoderBuffer.checkReadableBytes<br> 2.0% - 1,991 ms - 30,003 inv. org.jboss.netty.handler.codec.http.HttpMessageDecoder.splitHeader<br> 1.6% - 1,569 ms - 30,003 inv. org.jboss.netty.handler.codec.http.DefaultHttpMessage.addHeader<br>
0.3% - 343 ms - 10,001 inv. org.jboss.netty.handler.codec.http.HttpHeaders.getContentLength<br> 0.3% - 293 ms - 10,001 inv. org.jboss.netty.handler.codec.http.DefaultHttpMessage.isChunked<br> 4.4% - 4,378 ms - 10,001 inv. org.jboss.netty.handler.codec.http.HttpMessageDecoder.readLine<br>
0.9% - 885 ms - 10,001 inv. org.jboss.netty.handler.codec.http.HttpMessageDecoder.splitInitialLine<br> 0.8% - 796 ms - 10,001 inv. org.jboss.netty.handler.codec.http.HttpRequestDecoder.createMessage<br> 0.7% - 738 ms - 10,001 inv. org.jboss.netty.handler.codec.http.HttpMessageDecoder.skipControlCharacters<br>
0.7% - 696 ms - 30,003 inv. org.jboss.netty.handler.codec.replay.ReplayingDecoder.checkpoint(java.lang.Enum)<br> 0.4% - 417 ms - 10,001 inv. org.jboss.netty.handler.codec.http.HttpMessageDecoder.reset<br> 0.3% - 286 ms - 10,001 inv. org.jboss.netty.handler.codec.http.HttpHeaders.getContentLength<br>
<br><br><br><br clear="all">谢谢<br><br>刘继明<br>