[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

SOAP performance and unmarshalling/parsing speed

Micah Wedemeyer

3/19/2007 6:23:00 PM

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

--
Posted via http://www.ruby-....

1 Answer

NAKAMURA, Hiroshi

6/6/2007 1:49:00 PM

0

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

Hi,

Sorry for the late response.

Micah Wedemeyer wrote:
> 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...

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-----