1use lib '../lib';
2use lib '../example/lib';
3use lib '../../SOAP-WSDL_XS/blib/lib';
4use lib '../../SOAP-WSDL_XS/blib/arch';
5use strict;
6use Benchmark;
7use Storable;
8use SOAP::WSDL::Deserializer::XSD_XS;
9use SOAP::WSDL::Factory::Deserializer;
10# # register for SOAP 1.1
11SOAP::WSDL::Factory::Deserializer->register('1.1' => 'SOAP::WSDL::Deserializer::XSD_XS' );
12SOAP::WSDL::Factory::Transport->register('http' => 'Transport');
13
14use MyInterfaces::TestService::TestPort;
15my @data = ();
16my $soap = MyInterfaces::TestService::TestPort->new();
17
18# Load all classes - XML::Compile has created everything before, too
19timethis 150, sub { $soap->ListPerson({}) };
20timethis 300, sub { push @data, $soap->ListPerson({}) };
21@data = ();
22timethis 300, sub { push @data, $soap->ListPerson({}) };
23
24# for (1..50) { push @data, $soap->ListPerson({}) };
25#print $soap->ListPerson({});
26my $result = $soap->ListPerson({});
27
28timethis 30 , sub {
29    my $frozen = Storable::freeze( $result );
30    my $thawed = Storable::thaw($frozen);
31};
32# print $thawed;
33
34
35package Transport;
36use Class::Std::Fast;
37sub send_receive {
38return <<'EOT';
39<SOAP-ENV:Envelope
40  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
41  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
42  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
43  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
44<SOAP-ENV:Body>
45<ListPersonResponse xmlns="http://www.example.org/benchmark/">
46<out><NewElement><PersonID><ID>1</ID></PersonID><Salutation>Salutation0</Salutation><Name>Name0</Name><GivenName>Martin</GivenName><DateOfBirth>1970-01-01</DateOfBirth><HomeAddress><Street>Street 0</Street><ZIP>00000</ZIP><City>City0</City><Country>Country0</Country><PhoneNumber>++499131123456</PhoneNumber><MobilePhoneNumber>++49150123456</MobilePhoneNumber></HomeAddress><WorkAddress><Street>Somestreet 23</Street><ZIP>12345</ZIP><City>SomeCity</City><Country>Germany</Country><PhoneNumber>++499131123456</PhoneNumber><MobilePhoneNumber>++49150123456</MobilePhoneNumber></WorkAddress><Contracts><Contract><ContractID>100000</ContractID><ContractName>SomeContract0</ContractName></Contract><Contract><ContractID>100001</ContractID><ContractName>SomeContract1</ContractName></Contract><Contract><ContractID>100002</ContractID><ContractName>SomeContract2</ContractName></Contract><Contract><ContractID>100003</ContractID><ContractName>SomeContract3</ContractName></Contract></Contracts></NewElement><NewElement><PersonID><ID>1</ID></PersonID><Salutation>Salutation0</Salutation><Name>Name0</Name><GivenName>Martin</GivenName><DateOfBirth>1970-01-01</DateOfBirth><HomeAddress><Street>Street 0</Street><ZIP>00000</ZIP><City>City0</City><Country>Country0</Country><PhoneNumber>++499131123456</PhoneNumber><MobilePhoneNumber>++49150123456</MobilePhoneNumber></HomeAddress><WorkAddress><Street>Somestreet 23</Street><ZIP>12345</ZIP><City>SomeCity</City><Country>Germany</Country><PhoneNumber>++499131123456</PhoneNumber><MobilePhoneNumber>++49150123456</MobilePhoneNumber></WorkAddress><Contracts><Contract><ContractID>100000</ContractID><ContractName>SomeContract0</ContractName></Contract><Contract><ContractID>100001</ContractID><ContractName>SomeContract1</ContractName></Contract><Contract><ContractID>100002</ContractID><ContractName>SomeContract2</ContractName></Contract><Contract><ContractID>100003</ContractID><ContractName>SomeContract3</ContractName></Contract></Contracts></NewElement><NewElement><PersonID><ID>1</ID></PersonID><Salutation>Salutation0</Salutation><Name>Name0</Name><GivenName>Martin</GivenName><DateOfBirth>1970-01-01</DateOfBirth><HomeAddress><Street>Street 0</Street><ZIP>00000</ZIP><City>City0</City><Country>Country0</Country><PhoneNumber>++499131123456</PhoneNumber><MobilePhoneNumber>++49150123456</MobilePhoneNumber></HomeAddress><WorkAddress><Street>Somestreet 23</Street><ZIP>12345</ZIP><City>SomeCity</City><Country>Germany</Country><PhoneNumber>++499131123456</PhoneNumber><MobilePhoneNumber>++49150123456</MobilePhoneNumber></WorkAddress><Contracts><Contract><ContractID>100000</ContractID><ContractName>SomeContract0</ContractName></Contract><Contract><ContractID>100001</ContractID><ContractName>SomeContract1</ContractName></Contract><Contract><ContractID>100002</ContractID><ContractName>SomeContract2</ContractName></Contract><Contract><ContractID>100003</ContractID><ContractName>SomeContract3</ContractName></Contract></Contracts></NewElement><NewElement><PersonID><ID>1</ID></PersonID><Salutation>Salutation0</Salutation><Name>Name0</Name><GivenName>Martin</GivenName><DateOfBirth>1970-01-01</DateOfBirth><HomeAddress><Street>Street 0</Street><ZIP>00000</ZIP><City>City0</City><Country>Country0</Country><PhoneNumber>++499131123456</PhoneNumber><MobilePhoneNumber>++49150123456</MobilePhoneNumber></HomeAddress><WorkAddress><Street>Somestreet 23</Street><ZIP>12345</ZIP><City>SomeCity</City><Country>Germany</Country><PhoneNumber>++499131123456</PhoneNumber><MobilePhoneNumber>++49150123456</MobilePhoneNumber></WorkAddress><Contracts><Contract><ContractID>100000</ContractID><ContractName>SomeContract0</ContractName></Contract><Contract><ContractID>100001</ContractID><ContractName>SomeContract1</ContractName></Contract><Contract><ContractID>100002</ContractID><ContractName>SomeContract2</ContractName></Contract><Contract><ContractID>100003</ContractID><ContractName>SomeContract3</ContractName></Contract></Contracts></NewElement><NewElement><PersonID><ID>1</ID></PersonID><Salutation>Salutation0</Salutation><Name>Name0</Name><GivenName>Martin</GivenName><DateOfBirth>1970-01-01</DateOfBirth><HomeAddress><Street>Street 0</Street><ZIP>00000</ZIP><City>City0</City><Country>Country0</Country><PhoneNumber>++499131123456</PhoneNumber><MobilePhoneNumber>++49150123456</MobilePhoneNumber></HomeAddress><WorkAddress><Street>Somestreet 23</Street><ZIP>12345</ZIP><City>SomeCity</City><Country>Germany</Country><PhoneNumber>++499131123456</PhoneNumber><MobilePhoneNumber>++49150123456</MobilePhoneNumber></WorkAddress><Contracts><Contract><ContractID>100000</ContractID><ContractName>SomeContract0</ContractName></Contract><Contract><ContractID>100001</ContractID><ContractName>SomeContract1</ContractName></Contract><Contract><ContractID>100002</ContractID><ContractName>SomeContract2</ContractName></Contract><Contract><ContractID>100003</ContractID><ContractName>SomeContract3</ContractName></Contract></Contracts></NewElement><NewElement><PersonID><ID>1</ID></PersonID><Salutation>Salutation0</Salutation><Name>Name0</Name><GivenName>Martin</GivenName><DateOfBirth>1970-01-01</DateOfBirth><HomeAddress><Street>Street 0</Street><ZIP>00000</ZIP><City>City0</City><Country>Country0</Country><PhoneNumber>++499131123456</PhoneNumber><MobilePhoneNumber>++49150123456</MobilePhoneNumber></HomeAddress><WorkAddress><Street>Somestreet 23</Street><ZIP>12345</ZIP><City>SomeCity</City><Country>Germany</Country><PhoneNumber>++499131123456</PhoneNumber><MobilePhoneNumber>++49150123456</MobilePhoneNumber></WorkAddress><Contracts><Contract><ContractID>100000</ContractID><ContractName>SomeContract0</ContractName></Contract><Contract><ContractID>100001</ContractID><ContractName>SomeContract1</ContractName></Contract><Contract><ContractID>100002</ContractID><ContractName>SomeContract2</ContractName></Contract><Contract><ContractID>100003</ContractID><ContractName>SomeContract3</ContractName></Contract></Contracts></NewElement><NewElement><PersonID><ID>1</ID></PersonID><Salutation>Salutation0</Salutation><Name>Name0</Name><GivenName>Martin</GivenName><DateOfBirth>1970-01-01</DateOfBirth><HomeAddress><Street>Street 0</Street><ZIP>00000</ZIP><City>City0</City><Country>Country0</Country><PhoneNumber>++499131123456</PhoneNumber><MobilePhoneNumber>++49150123456</MobilePhoneNumber></HomeAddress><WorkAddress><Street>Somestreet 23</Street><ZIP>12345</ZIP><City>SomeCity</City><Country>Germany</Country><PhoneNumber>++499131123456</PhoneNumber><MobilePhoneNumber>++49150123456</MobilePhoneNumber></WorkAddress><Contracts><Contract><ContractID>100000</ContractID><ContractName>SomeContract0</ContractName></Contract><Contract><ContractID>100001</ContractID><ContractName>SomeContract1</ContractName></Contract><Contract><ContractID>100002</ContractID><ContractName>SomeContract2</ContractName></Contract><Contract><ContractID>100003</ContractID><ContractName>SomeContract3</ContractName></Contract></Contracts></NewElement><NewElement><PersonID><ID>1</ID></PersonID><Salutation>Salutation0</Salutation><Name>Name0</Name><GivenName>Martin</GivenName><DateOfBirth>1970-01-01</DateOfBirth><HomeAddress><Street>Street 0</Street><ZIP>00000</ZIP><City>City0</City><Country>Country0</Country><PhoneNumber>++499131123456</PhoneNumber><MobilePhoneNumber>++49150123456</MobilePhoneNumber></HomeAddress><WorkAddress><Street>Somestreet 23</Street><ZIP>12345</ZIP><City>SomeCity</City><Country>Germany</Country><PhoneNumber>++499131123456</PhoneNumber><MobilePhoneNumber>++49150123456</MobilePhoneNumber></WorkAddress><Contracts><Contract><ContractID>100000</ContractID><ContractName>SomeContract0</ContractName></Contract><Contract><ContractID>100001</ContractID><ContractName>SomeContract1</ContractName></Contract><Contract><ContractID>100002</ContractID><ContractName>SomeContract2</ContractName></Contract><Contract><ContractID>100003</ContractID><ContractName>SomeContract3</ContractName></Contract></Contracts></NewElement><NewElement><PersonID><ID>1</ID></PersonID><Salutation>Salutation0</Salutation><Name>Name0</Name><GivenName>Martin</GivenName><DateOfBirth>1970-01-01</DateOfBirth><HomeAddress><Street>Street 0</Street><ZIP>00000</ZIP><City>City0</City><Country>Country0</Country><PhoneNumber>++499131123456</PhoneNumber><MobilePhoneNumber>++49150123456</MobilePhoneNumber></HomeAddress><WorkAddress><Street>Somestreet 23</Street><ZIP>12345</ZIP><City>SomeCity</City><Country>Germany</Country><PhoneNumber>++499131123456</PhoneNumber><MobilePhoneNumber>++49150123456</MobilePhoneNumber></WorkAddress><Contracts><Contract><ContractID>100000</ContractID><ContractName>SomeContract0</ContractName></Contract><Contract><ContractID>100001</ContractID><ContractName>SomeContract1</ContractName></Contract><Contract><ContractID>100002</ContractID><ContractName>SomeContract2</ContractName></Contract><Contract><ContractID>100003</ContractID><ContractName>SomeContract3</ContractName></Contract></Contracts></NewElement><NewElement><PersonID><ID>1</ID></PersonID><Salutation>Salutation0</Salutation><Name>Name0</Name><GivenName>Martin</GivenName><DateOfBirth>1970-01-01</DateOfBirth><HomeAddress><Street>Street 0</Street><ZIP>00000</ZIP><City>City0</City><Country>Country0</Country><PhoneNumber>++499131123456</PhoneNumber><MobilePhoneNumber>++49150123456</MobilePhoneNumber></HomeAddress><WorkAddress><Street>Somestreet 23</Street><ZIP>12345</ZIP><City>SomeCity</City><Country>Germany</Country><PhoneNumber>++499131123456</PhoneNumber><MobilePhoneNumber>++49150123456</MobilePhoneNumber></WorkAddress><Contracts><Contract><ContractID>100000</ContractID><ContractName>SomeContract0</ContractName></Contract><Contract><ContractID>100001</ContractID><ContractName>SomeContract1</ContractName></Contract><Contract><ContractID>100002</ContractID><ContractName>SomeContract2</ContractName></Contract><Contract><ContractID>100003</ContractID><ContractName>SomeContract3</ContractName></Contract></Contracts></NewElement></out></ListPersonResponse>};
47</SOAP-ENV:Body>
48</SOAP-ENV:Envelope>
49EOT
50}
51