Paul,

I've done some work on Keith Brown's SOAP module, and I like its design, but one
thing I noticed is that it is slow.  Even under mod_perl, it can take up to 1
second(!) to serialize a large data structure.  I believe the reason is that it
makes method calls for every element in the Perl data structure, and method
calls in Perl are inefficient due to the symbol table lookups and @ISA
checking.  So the larger the data structure the worse the performance.  (I added
array support to it and tested an array of 200 values, which took ~1 sec to
serialize under mod_perl).

I'd be interested in speed comparisons between SOAP and SOAP::Lite.  I've looked
at your code, but not actually run it.  It doesn't look like you use recursive
method calls the way Keith does.  Have you done any benchmarks on large data
structure serialization?  I assume deserialization performance will be roughly
equivalent for SOAP vs. SOAP::Lite since they both use XML::Parser.  I read the
PERFORMANCE section on base64 encoding, but it didn't mention serialization
speed.

I am currently using SOAP, because I like the DM design, but I would switch to
SOAP::Lite if its serialization speed is significantly better.

Cheers,
-Adi

Paul Kulchenko wrote:
> 
> > you are dedicated to supporting the full SOAP API (not sure what
> > SOAP::Lite leaves out).
> First thing I did seven months ago was my email to Keith Brown
> (author of DM's SOAP/Perl module) about possible ways for cooperation
> and I'v been told that he's willing to, but design of his module
> should be consistent with other DM's implementations and he has no
> plans to change it. There was no easy way to combine our efforts and
> I came up with another implementation. Don't want to praise myself,
> but feature set seems to be pretty comparable with other toolkits. I
> took ::Lite, just because SOAP namespace was already taken. It does
> much more than you can expect from something with suffix Lite. "Lite
> suffix reflects number of calories you should spend using this
> module".
>

Reply via email to