SOAP performance and unmarshalling/parsing speed

M

Micah Wedemeyer

I have been playing around with SOAP a little (as a client), and I
really like soap4r. I was able to get my SOAP client running without
too much trouble at all.

Unfortunately, the performance is fairly slow. We have a SOAP web
service running on the localhost, but it still takes about 4-5 seconds
to get 150K of data.

I used the wiredump to put the request/response to STDOUT, and I
realized that the actual communication is happening very fast (easily
within .5 seconds). However, it hangs for a few seconds after the
response is received, before finally returning.

I am guessing that the unmarshalling and parsing of the returned
envelope is what is taking the most time. I have heard that Ruby is not
so great at XML parsing.

Lucky for me, the return is one big chunk of text, and I just need to
strip off the envelope and don't need any complicated parsing of the
internals.

So, finally, my question: What would be the quickest and easiest (in
terms of programming skill) of sending the SOAP call and getting the
resulting XML, but bypassing the parsing/unmarshalling? I think I can
handle the parsing by hand.

Thanks,
Micah
 
N

NAKAMURA, Hiroshi

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi,

Sorry for the late response.

Micah said:
Unfortunately, the performance is fairly slow. We have a SOAP web
service running on the localhost, but it still takes about 4-5 seconds
to get 150K of data.

Can you try soap4r-1.5.6? (it's now in RC stage and should be released
in a week). You can download RC2 from
http://dev.ctor.org/soap4r/wiki#a2007-06-05:1.5.6-RC2

For 1.5.6 last month, I did profile analysis especially on parsing large
SOAP response. It should have better performance characteristics (CPU
and memory).

And would you please send me a sample client and a sample dumped SOAP
response if it's still slow. I'll check where's the bottleneck.
So, finally, my question: What would be the quickest and easiest (in
terms of programming skill) of sending the SOAP call and getting the
resulting XML, but bypassing the parsing/unmarshalling? I think I can
handle the parsing by hand.

sending:
driver.call_my_method(REXML::Document.new("<param1>...</param1>"))

receiving:
driver.return_response_as_xml = true
xml = driver.call_my_method(...)
doc = REXML::Document.new(xml)

These require soap4r-1.5.6 RC2+.

Regards,
// NaHi

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Cygwin)

iQEVAwUBRma7NB9L2jg5EEGlAQJKhAgAnmfpoyOY5xkZQaSJY7VdOtpeqhZBB36w
Fl6hpVqciWnIwWPHTwms+LfFceS8dsREWY8QXlcljozoNHyIUSXh36gHbHUJyzBp
RnBSROipngjDG7CsjyGHZkt7hhebmpAggfEPFw66bnAHYF/Zt/CG9g4ww1ZusTdV
cvsomZPe9xn/O7/CciZOpZRHMcg2ZPOotQA58LTKpj8+mXqFn5yke3j2Zid9AiFJ
IdtbJCMf/K14ufEfcAbkQUUjVE7n6AoNJYbFx7bNxo47Rwnv7c+VPBDc8KaWK+3w
4IMn7LP181wUp5TsUGoFeiKX7GiZy9QFgytrBqVnLaTZmotS++obgg==
=x4fO
-----END PGP SIGNATURE-----
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Members online

Forum statistics

Threads
473,769
Messages
2,569,578
Members
45,052
Latest member
LucyCarper

Latest Threads

Top