Hi Remy,

2016-08-26 15:06 GMT+03:00 Rémy Maucherat <r...@apache.org>:
>
> 2016-08-26 12:23 GMT+02:00 <violet...@apache.org>:
>
> > Author: violetagg
> > Date: Fri Aug 26 10:23:15 2016
> > New Revision: 1757813
> >
> > URL: http://svn.apache.org/viewvc?rev=1757813&view=rev
> > Log:
> > Introduce a new method SocketWrapperBase.doWrite(boolean, ByteBuffer)
> >
> > Modified:
> >     tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
> >     tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java
> >     tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java
> >     tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java
> >
> > I did examine adding some ByteBuffer write methods (as you can see in
the
> API), with gather writes in mind with NIO2 for HTTP/2, but:
> - Since the other write method also exists, if the main buffer isn't
empty,
> there will be corruption. Let's say that's not a problem: the user is
> supposed to know what it is doing and will have to flush :)
> - A single buffer is most likely more memory efficient.
> - I redid HTTP/2 with my async gather writes, minimizing contention more,
> and ... the performance was measurably worse than the regular code. So I
> gave up on it. Maybe reads will be more useful (no more blocking reads for
> HTTP/2 headers, this is not really supposed to happen of course, but still
> decent to have).
> - When using SSL, the single buffer system is *way* better since it can be
> a direct BB, which avoids a ton of allocation and buffer copies.
>
> So I doubt this is more useful than my own additions, but on the positive
> side, the changes are minimal.
>

This is just a preparation for the next commits.
I'm not going to remove the write methods with byte array for the moment
but introduce in parallel write method with ByteBuffer.
When implementing CoyoteOutputStream.write(ByteBuffer) I do not want to
make conversion to byte array but want to use ByteBuffer only.

Thanks,
Violeta

> Rémy

Reply via email to