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