import SOAP-WSDL 2.00_27 from CPAN
git-cpan-module: SOAP-WSDL git-cpan-version: 2.00_27 git-cpan-authorid: MKUTTER git-cpan-file: authors/id/M/MK/MKUTTER/SOAP-WSDL-2.00_27.tar.gz
This commit is contained in:
committed by
Michael G. Schwern
parent
3cfeebae54
commit
eb096ad88e
@@ -1,12 +1,14 @@
|
||||
use lib '../lib';
|
||||
use lib '../example/lib';
|
||||
use lib '../../SOAP-WSDL_XS/blib/lib';
|
||||
use lib '../../SOAP-WSDL_XS/blib/arch';
|
||||
use strict;
|
||||
|
||||
package MyData;
|
||||
my $XML;
|
||||
sub xml {
|
||||
return $XML if ($XML);
|
||||
|
||||
|
||||
open my $fh, 'person.xml' or die 'cannot open data file';
|
||||
$XML = join '', <$fh>;
|
||||
close $fh;
|
||||
@@ -17,12 +19,10 @@ package MyTransport;
|
||||
use SOAP::WSDL::Factory::Transport;
|
||||
SOAP::WSDL::Factory::Transport->register( http => __PACKAGE__ );
|
||||
sub send_receive {
|
||||
# warn MyData::xml;
|
||||
return MyData::xml();
|
||||
}
|
||||
sub new { return bless {}, 'MyTransport' };
|
||||
|
||||
|
||||
package main;
|
||||
|
||||
use Benchmark qw(cmpthese);
|
||||
@@ -34,68 +34,80 @@ use XML::Compile::Util;#use Data::Dumper;
|
||||
#print Dumper $result;
|
||||
use XML::Compile::WSDL11;
|
||||
use XML::Simple;
|
||||
|
||||
use SOAP::WSDL::Deserializer::XSD_XS;
|
||||
use SOAP::WSDL::Factory::Deserializer;
|
||||
|
||||
$XML::Simple::PREFERRED_PARSER = 'XML::Parser';
|
||||
use SOAP::Lite;
|
||||
|
||||
use MyInterfaces::TestService::TestPort;
|
||||
|
||||
my $tester = XML::Compile::SOAP::Tester->new();
|
||||
|
||||
my $action = pack_type 'http://example.org', 'ListPerson';
|
||||
sub ListPerson(@) { MyData::xml };
|
||||
my $compile = XML::Compile::WSDL11->new('../example/wsdl/Person.wsdl');
|
||||
# $tester->fromWSDL($wsdl);
|
||||
$tester->actionCallback($action, \&ListPerson);
|
||||
|
||||
# I have to lookup the methods from the WSDL
|
||||
$tester->actionCallback($action, \&MyData::xml);
|
||||
|
||||
my $call = $compile->compileClient('ListPerson');
|
||||
|
||||
# I have to lookup the parameters from the WSDL
|
||||
my $result = $call->({ in => undef});
|
||||
#use Data::Dumper;
|
||||
#print Dumper $result;
|
||||
|
||||
# Initialize SOAP::Lite
|
||||
my $deserializer = SOAP::Deserializer->new();
|
||||
|
||||
# Initialize SOAP::WSDL interface
|
||||
my $soap = MyInterfaces::TestService::TestPort->new();
|
||||
# Load all classes - XML::Compile has created everything before, too
|
||||
$soap->ListPerson({});
|
||||
|
||||
$result = $soap->ListPerson({});
|
||||
#print $result;
|
||||
#exit;
|
||||
# # register for SOAP 1.1
|
||||
SOAP::WSDL::Factory::Deserializer->register('1.1' => 'SOAP::WSDL::Deserializer::XSD_XS' );
|
||||
|
||||
my $wsdl_xs = MyInterfaces::TestService::TestPort->new();
|
||||
|
||||
# trigger loading of XML Data
|
||||
{
|
||||
use bytes;
|
||||
print "XML length (bytes): " . length( MyData::xml() ), "\n";
|
||||
}
|
||||
|
||||
my @data = ();
|
||||
my $n = 0;
|
||||
print "Benchmark conducted with
|
||||
SOAP::Lite - $SOAP::Lite::VERSION
|
||||
SOAP::WSDL - $SOAP::WSDL::Client::VERSION
|
||||
SOAP::WSDL_XS - $SOAP::WSDL::Deserializer::XSD_XS::VERSION;
|
||||
XML::Compile::SOAP - $XML::Compile::SOAP::VERSION
|
||||
XML::Simple - $XML::Simple::VERSION
|
||||
|
||||
Benchmark $n: Push result on list
|
||||
Benchmark $n: Store result in private variable and destroy it
|
||||
";
|
||||
$n++;
|
||||
print "Benchmark $n: Store result in private variable and destroy it\n";
|
||||
cmpthese 100, {
|
||||
cmpthese 300, {
|
||||
'XML::Simple' => sub { my $result = XMLin( MyData::xml() )},
|
||||
'SOAP::WSDL' => sub { my $result = $soap->ListPerson({}) },
|
||||
'XML::Compile::SOAP' => sub { my $result = $call->() },
|
||||
'SOAP::WSDL_XS' => sub { my $result = @data, $wsdl_xs->ListPerson({}) },
|
||||
'SOAP::Lite' => sub { my $result = $deserializer->deserialize( MyData::xml() )}
|
||||
};
|
||||
|
||||
print "Benchmark $n: Push result on list\n";
|
||||
$n++;
|
||||
cmpthese 100, {
|
||||
cmpthese 500, {
|
||||
'XML::Simple' => sub { push @data, XMLin( MyData::xml() )},
|
||||
'SOAP::WSDL' => sub { push @data, $soap->ListPerson({}) },
|
||||
'XML::Compile::SOAP' => sub { push @data, $call->() },
|
||||
'SOAP::WSDL_XS' => sub { push @data, $wsdl_xs->ListPerson({}) },
|
||||
'SOAP::Lite' => sub { push @data, $deserializer->deserialize( MyData::xml() )}
|
||||
};
|
||||
|
||||
@data = ();
|
||||
print "Benchmark $n: Play it again, Sam\n";
|
||||
|
||||
cmpthese 100, {
|
||||
cmpthese 500, {
|
||||
'XML::Simple' => sub { push @data, XMLin( MyData::xml() )},
|
||||
'SOAP::WSDL' => sub { push @data, $soap->ListPerson({}) },
|
||||
'SOAP::WSDL_XS' => sub { push @data, $wsdl_xs->ListPerson({}) },
|
||||
'XML::Compile::SOAP' => sub { push @data, $call->() },
|
||||
'SOAP::Lite' => sub { push @data, $deserializer->deserialize( MyData::xml() )}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user