On Tue, 15 Oct 2002, Steve Loughran wrote:
> Interesting to see that FP to ascii conversion takes so long; one of my
> projects is very FP intensive. But this is an XML parser issue, not SOAP
> stack per-se. Maybe I should look at using a JNI to msxml bridge rather than
> xerces/J for the old xml parser. The proposal to use a binary representation
> of FP is interesting; there are the ISO standard representations after all,
> but it does go against the fundamentals of both XML and XML Schema.

A possible compromise which might be acceptable for
scientific computing is to send the double as text, but
include a hint which can be used to speed up the FP
conversion.  We haven't investigated this yet, though.

> ----- Original Message -----
> From: "Scott Nichol" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Tuesday, October 15, 2002 9:03 AM
> Subject: Re: Axis performance
> 
> 
> > Something this paper does not touch upon that has been much discussed on
> > the Apache SOAP lists is disabling the Nagle algorithm, i.e. calling
> > setTcpNoDelay(true), on the client socket.  Basically, with the Nagle
> > algorithm enabled (the default), the client TCP/IP stack sends each data
> > packet after receiving the ACK for the previous packet.  This interacts
> > with the implementation of delayed ACK on the server.  Delayed ACK
> > withholds the ACK for a packet for typically 200 ms when either the
> > packet is not a full MAC frame or the preceeding packet is not a full
> > frame, although the delay is cancelled if the server has data to send to
> > the client, in which case the ACK is sent with the data.
> >
> > It had been my assumption that Nagling would have no effect on Apache
> > SOAP since it uses a buffered output stream, the size of which can be
> > set to be larger than a MAC frame.  My initial tests with a Linux server
> > seemed to confirm this, but I got different results running with a Win2k
> > server.  It turns out that in the Red Hat 7.3 build I was using, delayed
> > ACK is disabled.
> >
> > I had assumed using buffered output would suffice since with a buffer
> > size greater than the frame size, the buffering mechanism would always
> > send full frames until the final flush.  This is my recollection of how
> > it works in C.  This is *not* how it works in the Java libraries.  When
> > the data for a write operation will not fit in the current buffer, the
> > current buffer (which is *not* full) is written to the underlying
> > stream.  For Apache SOAP, the HTTP headers are written by the buffered
> > output stream in one write operation, then the data is written in
> > another.  This causes 2 or more writes to the underlying stream whenever
> > the buffer is not large enough to hold all the headers and data at once.
> > The first write is just the HTTP headers and is typically not a full
> > Ethernet frame.  The Nagle algorithm and delayed ACK combine to give an
> > unnecessary and unwanted 200 ms delay.
> 
> hmm.
> 
> >
> > I do not have an Axis setup to confirm this affects Axis, but based on
> > my research with Apache SOAP, I am confident that it does.
> >
> > Scott Nichol
> >
> 
> 

Reply via email to