You are viewing a plain text version of this content. The canonical link for it is here.
Posted to soap-user@ws.apache.org by Mark Bloore <mb...@fmco.com> on 2001/04/12 18:19:35 UTC

RE: soap library performance -- sources

ok, here is a zip of the source (with a description below).

i don't know the hardware setup off the top of my head, except that i am
running my client on a PII laptop and the server on a PIII desktop.  it is
only relative performance i am looking at anyway, between my real client and
my fake client.

btw, i noticed that my JVM has some performance montitoring capability, and
i tried it out on tomcat.  in a run lasting less than a minute, it made over
2 million calls to java.lang.System.currentTimeMillis from
sun.security.provider.SeedGenerator.run, consuming 27% of the cpu!  further
checking suggests that this thread runs continuously, regardless of requests
to the server.  i haven't looked into what this is for.
my client, on the other hand, spends a lot of time (but much less than 27%)
in i/o routines, which my be a result of doing byte-at-a-time reads, as
someone else suggested in this thread.


the attached winzip file contains some loose files (so you'll want to make a
directory to put it in), and two subdirectories.  'plain' contains two
classes used by the server, and benchmark.java, which calls those classes
directly. 'SOAP' contains various clients which make the same calls:
SOAPClient is a regular one, SOAPClient2 and SOAPClient3 move progressively
more setup code out of the individual calls to the server.  they run just as
fast; all the real work happens in the Call.invoke method.  FakeClient takes
the SOAP messages from files and fires them straight to the server through a
socket.  it runs about 20 times faster than SOAPClient on my setup.

setup.cmd sets the classpath for running the clients.  justb.cmd runs a
(hard-coded) client in a loop.  the arguments are <internal loop count>
<num. times to run client> <port> <server>.  eg,
justb 100 5 8080 remote
runs the client 5 times, telling it to run its loop 100 times, going to port
8080 on the server named 'remote'.
translating these cmd files for unix is trivial.

i haven't included the visual studio files i use to build the client and
server.  there is nothing special involved; you just have to make sure the
usual libraries are available, as for other apache soap builds.

-- 
mARK bLOORE <mb...@fmco.com> 

-----Original Message-----
From: Aleksander Slominski [mailto:aslom@cs.indiana.edu]
Sent: Wednesday, 11 April 2001 10:03 PM
To: soap-user@xml.apache.org
Cc: 'soap-dev@xml.apache.org'
Subject: Re: soap library performance


hi,

please post you client and server code so others could reproduce test
results
and confirm them. you should also describe your hardware/software
environment or
results are not very useful (how you compare 486 to 1Ghz PIII?).

there was some work done on profiling current soap apache but there was no
conclusion - except maybe that xerces is introducing quite of overhead
(check
mail archives). also next version of apache soap called axis should have
better
performance. also you may find interesting test results that we have done
for
various soap implementations about a half yes ago at (and that includes
source
code):

http://www.extreme.indiana.edu/soap/#perf

i plan to update those results for latest SoapRMI 1.1 (i have completely
rewritten it since 1.0 version) and apache soap (though apache soap did not
change).

thanks,

alek

Mark Bloore wrote:

> I have written a simple trial client and server using Apache SOAP 2.1.
They
> exchange a small amount of data (less than 5KB) in Strings and Vectors of
> String (and one Boolean).  The one user-defined object involved uses the
> Bean serializer and contains only String members.
> When my client does 100 loops it takes 60 seconds.
>
> I captured the output from the client, and wrote a fake client that simply
> sends that data to the server through a Socket, and discards the returned
> data without analysis.  Using TcpTunnelGui I verified that the correct
SOAP
> data comes back.
> When my fake client does 100 loops it takes 3 seconds.
>
> It looks like the Apache SOAP library is terribly slow marshalling and
> unmarshalling data, and perhaps isn't too good at the I/O either.  I don't
> have any code instrumentation tools to figure out just where the time goes
> at lower levels.  I have used Windows' Perfmon to look at overall CPU and
> I/O use, and am not entirely sure how to interpret the results;  running
the
> real client, both CPU use and I/O rate are low, as if they were waiting
for
> each other, while with the fake client both are high.
>
> Running a client built (in VB) with Microsoft's SOAP toolkit beta 2 goes
> about 5 times faster than the Java/Apache client.  The server, by the way,
> is Tomcat 3.2.1.  I have also tried WebLogic 5.1 a few times, with similar
> results.  All this is with the server on a remote box.  If client and
server
> are on the same box, things are faster, and WebLogic noticeably faster
than
> Tomcat.
>
> Does anyone have any insights into Apache SOAP performance?  Is there
> anything I could do to speed it up?  (My client is closely modeled on the
> AddressBook example.)  Does the server have much to do with it?
>
> --
> mARK bLOORE <mb...@fmco.com>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: soap-user-unsubscribe@xml.apache.org
> For additional commands, email: soap-user-help@xml.apache.org

--
Aleksander Slominski, LH 316, IU, http://www.extreme.indiana.edu/~aslom
As I look afar I see neither cherry Nor tinted leaves Just a modest hut
on the coast In the dusk of Autumn nightfall - Fujiwara no Teika(1162-1241)



---------------------------------------------------------------------
To unsubscribe, e-mail: soap-user-unsubscribe@xml.apache.org
For additional commands, email: soap-user-help@xml.apache.org