1use strict;
2use warnings;
3use Benchmark;
4use lib '../../lib';
5use lib '../../../Class-Std-Fast/lib';
6
7use SOAP::WSDL::XSD::Typelib::Builtin::string;
8
9my $obj = SOAP::WSDL::XSD::Typelib::Builtin::string->new();
10
11timethese 20000, {
12    'new' => sub { SOAP::WSDL::XSD::Typelib::Builtin::string->new() },
13    'new + params' => sub { SOAP::WSDL::XSD::Typelib::Builtin::string->new({
14            value => 'Teststring',
15        })
16    },
17};
18
19$obj->set_value('Foobar');
20timethese 20000, {
21    serialize => sub { $obj->serialize() }
22};
23
24my $data;
25timethese 1000000, {
26    'set_FOO' => sub { $obj->set_value('Test') },
27    'get_FOO' => sub { $data = $obj->get_value() },
28};
29
30
31
32__END__
33
34Benchmark: timing 20000 iterations of new, new + params...
35       new:  1 wallclock secs ( 0.41 usr +  0.00 sys =  0.41 CPU) @ 48780.49/s (n=20000)
36new + params:  1 wallclock secs ( 0.53 usr +  0.01 sys =  0.54 CPU) @ 37037.04/s (n=20000)
37Benchmark: timing 1000000 iterations of get_FOO, set_FOO...
38   get_FOO:  2 wallclock secs ( 1.43 usr +  0.01 sys =  1.44 CPU) @ 694444.44/s (n=1000000)
39   set_FOO:  0 wallclock secs ( 1.43 usr +  0.01 sys =  1.44 CPU) @ 694444.44/s (n=1000000)
40
41
42::Fast
43---
44Benchmark: timing 20000 iterations of new, new + params...
45       new:  0 wallclock secs ( 0.44 usr +  0.01 sys =  0.45 CPU) @ 44444.44/s (n=20000)
46new + params:  1 wallclock secs ( 0.55 usr +  0.00 sys =  0.55 CPU) @ 36363.64/s (n=20000)
47Benchmark: timing 1000000 iterations of get_FOO, set_FOO...
48   get_FOO:  0 wallclock secs ( 0.81 usr +  0.00 sys =  0.81 CPU) @ 1234567.90/s (n=1000000)
49   set_FOO:  2 wallclock secs ( 0.87 usr +  0.01 sys =  0.88 CPU) @ 1136363.64/s (n=1000000)
50
51::Fast with inlined ID
52Benchmark: timing 20000 iterations of new, new + params...
53       new:  0 wallclock secs ( 0.41 usr +  0.00 sys =  0.41 CPU) @ 48780.49/s (n=20000)
54new + params:  1 wallclock secs ( 0.52 usr +  0.00 sys =  0.52 CPU) @ 38461.54/s (n=20000)
55Benchmark: timing 1000000 iterations of get_FOO, set_FOO...
56   get_FOO:  2 wallclock secs ( 0.80 usr +  0.00 sys =  0.80 CPU) @ 1250000.00/s (n=1000000)
57   set_FOO:  2 wallclock secs ( 0.89 usr + -0.01 sys =  0.88 CPU) @ 1136363.64/s (n=1000000)