import SOAP-WSDL 2.00_25 from CPAN

git-cpan-module:   SOAP-WSDL
git-cpan-version:  2.00_25
git-cpan-authorid: MKUTTER
git-cpan-file:     authors/id/M/MK/MKUTTER/SOAP-WSDL-2.00_25.tar.gz
This commit is contained in:
Martin Kutter
2007-12-02 14:26:22 -08:00
committed by Michael G. Schwern
parent 84b53d9261
commit a9033164e6
177 changed files with 3449 additions and 2063 deletions

View File

@@ -1,16 +1,16 @@
#!/usr/bin/perl -w
%DB::packages=(SOAP::WSDL::Expat::MessageParser => 1);
%DB::packages=(SOAP::WSDL::Expat::MessageParser => 1);
use strict;
use warnings;
use lib '../lib';
use lib 'lib';
use lib '../../Class-Std-Fast/lib';
use lib '../t/lib';
# use SOAP::WSDL::SAX::MessageHandler;
use Benchmark qw(cmpthese timethese);
use SOAP::WSDL::Expat::MessageParser;
use SOAP::WSDL::Expat::Message2Hash;
use SOAP::Lite;
use XML::Simple;
use XML::LibXML;
use MyComplexType;
@@ -55,6 +55,8 @@ my $libxml = XML::LibXML->new();
$libxml->keep_blanks(0);
my @data;
my $deserializer = SOAP::Deserializer->new();
sub libxml_test {
my $dom = $libxml->parse_string( $xml );
push @data, dom2hash( $dom->firstChild );
@@ -100,11 +102,9 @@ cmpthese 5000,
'XML::Simple (Hash)' => sub { push @data, XMLin $xml },
'XML::LibXML (DOM)' => sub { push @data, $libxml->parse_string( $xml ) },
'XML::LibXML (Hash)' => \&libxml_test,
'SOAP::Lite' => sub { push @data, $deserializer->deserialize( $xml ) },
};
# for (1..10000) { push @data, $parser->parse( $xml ) };
# data classes reside in t/lib/Typelib/
BEGIN {
package FakeResolver;
@@ -115,6 +115,8 @@ BEGIN {
'MyAtomicComplexTypeElement/test/test2' => 'MyTestElement2',
);
sub get_typemap { return \%class_list; };
sub get_map { return \%class_list };
sub new { return bless {}, 'FakeResolver' };

View File

@@ -2,6 +2,8 @@ use strict;
use warnings;
use Benchmark;
use lib '../../lib';
use lib '../../../Class-Std-Fast/lib';
use SOAP::WSDL::XSD::Typelib::Builtin::anySimpleType;
my $obj = SOAP::WSDL::XSD::Typelib::Builtin::anySimpleType->new();
@@ -19,3 +21,37 @@ timethese 1000000, {
'set_FOO' => sub { $obj->set_value('Test') },
'get_FOO' => sub { $data = $obj->get_value() },
};
__END__
Benchmark: timing 10000 iterations of new, new + params, set_FOO...
new: 0 wallclock secs ( 0.83 usr + 0.00 sys = 0.83 CPU) @ 12048.19/s (n=10000)
new + params: 1 wallclock secs ( 0.58 usr + 0.00 sys = 0.58 CPU) @ 17241.38/s (n=10000)
set_FOO: 0 wallclock secs ( 0.01 usr + 0.00 sys = 0.01 CPU) @ 1000000.00/s (n=10000)
(warning: too few iterations for a reliable count)
Benchmark: timing 1000000 iterations of get_FOO, set_FOO...
get_FOO: 1 wallclock secs ( 1.79 usr + 0.01 sys = 1.80 CPU) @ 555555.56/s (n=1000000)
set_FOO: 2 wallclock secs ( 1.44 usr + 0.03 sys = 1.47 CPU) @ 680272.11/s (n=1000000)
## Fast:
Benchmark: timing 10000 iterations of new, new + params, set_FOO...
new: 1 wallclock secs ( 0.67 usr + 0.01 sys = 0.68 CPU) @ 14705.88/s (n=10000)
new + params: 1 wallclock secs ( 0.54 usr + 0.00 sys = 0.54 CPU) @ 18518.52/s (n=10000)
set_FOO: 0 wallclock secs ( 0.01 usr + 0.00 sys = 0.01 CPU) @ 1000000.00/s (n=10000)
(warning: too few iterations for a reliable count)
Benchmark: timing 1000000 iterations of get_FOO, set_FOO...
get_FOO: 2 wallclock secs ( 1.11 usr + 0.00 sys = 1.11 CPU) @ 900900.90/s (n=1000000)
set_FOO: 2 wallclock secs ( 0.80 usr + 0.00 sys = 0.80 CPU) @ 1250000.00/s (n=1000000)
## Fast qw(2);
Benchmark: timing 10000 iterations of new, new + params, set_FOO...
new: 1 wallclock secs ( 0.17 usr + 0.00 sys = 0.17 CPU) @ 58823.53/s (n=10000)
(warning: too few iterations for a reliable count)
new + params: 0 wallclock secs ( 0.19 usr + 0.00 sys = 0.19 CPU) @ 52631.58/s (n=10000)
(warning: too few iterations for a reliable count)
set_FOO: 0 wallclock secs ( 0.01 usr + 0.00 sys = 0.01 CPU) @ 1000000.00/s (n=10000)
(warning: too few iterations for a reliable count)
Benchmark: timing 1000000 iterations of get_FOO, set_FOO...
get_FOO: 1 wallclock secs ( 1.12 usr + 0.00 sys = 1.12 CPU) @ 892857.14/s (n=1000000)
set_FOO: 0 wallclock secs ( 0.80 usr + 0.01 sys = 0.81 CPU) @ 1234567.90/s (n=1000000)

View File

@@ -2,6 +2,8 @@ use strict;
use warnings;
use Benchmark;
use lib '../../lib';
use lib '../../../Class-Std-Fast/lib';
use SOAP::WSDL::XSD::Typelib::Builtin::string;
my $obj = SOAP::WSDL::XSD::Typelib::Builtin::string->new();
@@ -23,3 +25,32 @@ timethese 1000000, {
'set_FOO' => sub { $obj->set_value('Test') },
'get_FOO' => sub { $data = $obj->get_value() },
};
__END__
Benchmark: timing 20000 iterations of new, new + params...
new: 1 wallclock secs ( 0.41 usr + 0.00 sys = 0.41 CPU) @ 48780.49/s (n=20000)
new + params: 1 wallclock secs ( 0.53 usr + 0.01 sys = 0.54 CPU) @ 37037.04/s (n=20000)
Benchmark: timing 1000000 iterations of get_FOO, set_FOO...
get_FOO: 2 wallclock secs ( 1.43 usr + 0.01 sys = 1.44 CPU) @ 694444.44/s (n=1000000)
set_FOO: 0 wallclock secs ( 1.43 usr + 0.01 sys = 1.44 CPU) @ 694444.44/s (n=1000000)
::Fast
---
Benchmark: timing 20000 iterations of new, new + params...
new: 0 wallclock secs ( 0.44 usr + 0.01 sys = 0.45 CPU) @ 44444.44/s (n=20000)
new + params: 1 wallclock secs ( 0.55 usr + 0.00 sys = 0.55 CPU) @ 36363.64/s (n=20000)
Benchmark: timing 1000000 iterations of get_FOO, set_FOO...
get_FOO: 0 wallclock secs ( 0.81 usr + 0.00 sys = 0.81 CPU) @ 1234567.90/s (n=1000000)
set_FOO: 2 wallclock secs ( 0.87 usr + 0.01 sys = 0.88 CPU) @ 1136363.64/s (n=1000000)
::Fast with inlined ID
Benchmark: timing 20000 iterations of new, new + params...
new: 0 wallclock secs ( 0.41 usr + 0.00 sys = 0.41 CPU) @ 48780.49/s (n=20000)
new + params: 1 wallclock secs ( 0.52 usr + 0.00 sys = 0.52 CPU) @ 38461.54/s (n=20000)
Benchmark: timing 1000000 iterations of get_FOO, set_FOO...
get_FOO: 2 wallclock secs ( 0.80 usr + 0.00 sys = 0.80 CPU) @ 1250000.00/s (n=1000000)
set_FOO: 2 wallclock secs ( 0.89 usr + -0.01 sys = 0.88 CPU) @ 1136363.64/s (n=1000000)

69
benchmark/hello.pl Normal file
View File

@@ -0,0 +1,69 @@
#!/usr/bin/perl -w
use strict;
use warnings;
use lib '../example/lib';
use lib '/home/martin/workspace/SOAP-WSDL-Fast_XS/blib/lib';
use lib '/home/martin/workspace/SOAP-WSDL-Fast_XS/blib/arch';
use SOAP::Lite;
use XML::Compile::WSDL11;
use XML::Compile::Transport::SOAPHTTP;
use MyInterfaces::HelloWorld::HelloWorldSoap;
use SOAP::WSDL::Deserializer::XSD_XS;
use Benchmark qw(cmpthese);
my $lite = SOAP::Lite->new(
proxy => 'http://localhost:81/soap-wsdl-test/helloworld.pl'
);
$lite->on_action( sub { "urn:HelloWorld#sayHello" });
$lite->autotype(0);
my $soap = MyInterfaces::HelloWorld::HelloWorldSoap->new();
my $soap_xs = MyInterfaces::HelloWorld::HelloWorldSoap->new();
$soap_xs->set_deserializer( SOAP::WSDL::Deserializer::XSD_XS->new() );
my @result;
sub wsdl_bench {
push @result, $soap->sayHello({
name => $ARGV[1] || '"Your name"',
givenName => $ARGV[0] || '"Your given name"',
});
}
sub wsdl_xs_bench {
push @result, $soap_xs->sayHello({
name => $ARGV[1] || '"Your name"',
givenName => $ARGV[0] || '"Your given name"',
});
}
my $wsdl = XML::Compile::WSDL11->new('../example/wsdl/11_helloworld.wsdl');
my $call = $wsdl->compileClient('sayHello');
sub compile_bench {
push @result, $call->(
name => $ARGV[1] || '"Your name"',
givenName => $ARGV[0] || '"Your given name"',
);
}
sub lite_bench {
push @result, $lite->call(
SOAP::Data->name("sayHello")
->attr({ xmlns => 'urn:HelloWorld' }),
SOAP::Data->name('name')->value( $ARGV[1] || '"Your name"'),
SOAP::Data->name('givenName')->value( $ARGV[0] || '"Your given name"'),
);
}
wsdl_bench();
wsdl_xs_bench();
cmpthese 150, {
'SOAP::WSDL' => \&wsdl_bench,
'SOAP::WSDL_XS' => \&wsdl_xs_bench,
'XML::Compile' => \&compile_bench,
# 'SOAP::Lite' => \&lite_bench,
}