Bencher-ScenarioBundle-Accessors
view release on metacpan or search on metacpan
lib/Bencher/Scenario/Accessors/Set.pm view on Meta::CPAN
state $o = do { my $o = Perl::Examples::Accessors::Moose->new; $o }; $o->attr1(42)
=item * Mo (perl_code)
Code template:
state $o = do { my $o = Perl::Examples::Accessors::Mo->new; $o }; $o->attr1(42)
=item * Object::Pad (perl_code)
Code template:
state $o = do { my $o = Perl::Examples::Accessors::ObjectPad->new; $o }; $o->set_attr1(42)
=item * raw hash access (perl_code)
Code template:
state $o = do { my $o = Perl::Examples::Accessors::Hash->new; $o }; $o->{attr1} = 42
=item * raw array access (perl_code)
Code template:
state $o = do { my $o = Perl::Examples::Accessors::Array->new; $o }; $o->[0] = 42
=back
=head1 BENCHMARK SAMPLE RESULTS
=head2 Sample benchmark #1
Run on: perl: I<< v5.38.2 >>, CPU: I<< Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz (2 cores) >>, OS: I<< GNU/Linux Ubuntu version 20.04 >>, OS kernel: I<< Linux version 5.4.0-164-generic >>.
Benchmark command (default options):
% bencher -m Accessors::Set
Result formatted as table:
#table1#
+------------------------------------+-----------+-----------+-----------------------+-----------------------+---------+---------+
| participant | rate (/s) | time (ns) | pct_faster_vs_slowest | pct_slower_vs_fastest | errors | samples |
+------------------------------------+-----------+-----------+-----------------------+-----------------------+---------+---------+
| Simple::Accessor | 718000 | 1390 | 0.00% | 2838.97% | 4.5e-10 | 20 |
| Class::Accessor::PackedString::Set | 1430000 | 699 | 99.12% | 1375.97% | 3.3e-10 | 20 |
| Class::Accessor::PackedString | 1950000 | 514 | 170.83% | 985.18% | 2.9e-10 | 21 |
| Class::Accessor | 2080000 | 480.8 | 189.62% | 914.78% | 4e-11 | 22 |
| Class::InsideOut | 2680000 | 372 | 273.84% | 686.16% | 1.3e-10 | 22 |
| Object::Pad | 3830000 | 261 | 432.63% | 451.78% | 1.4e-10 | 20 |
| Moose | 4040000 | 248 | 462.21% | 422.76% | 5.6e-11 | 24 |
| Object::Tiny::RW | 4100000 | 250 | 465.92% | 419.33% | 4.8e-10 | 20 |
| Class::Struct | 4430000 | 226 | 516.87% | 376.43% | 7.8e-11 | 20 |
| Class::Accessor::Array | 4640000 | 216 | 545.38% | 355.39% | 6.2e-11 | 22 |
| Mojo::Base | 4910000 | 204 | 584.01% | 329.67% | 1.1e-10 | 21 |
| Object::Simple | 5150000 | 194 | 616.89% | 309.96% | 9.1e-11 | 20 |
| no generator (hash-based) | 5280000 | 189 | 635.52% | 299.57% | 1.1e-10 | 20 |
| Class::Tiny | 5360000 | 186 | 646.95% | 293.47% | 8.7e-11 | 21 |
| Mo | 5370000 | 186 | 647.38% | 293.23% | 1.4e-10 | 24 |
| no generator (array-based) | 5980000 | 167 | 732.60% | 252.99% | 1.1e-10 | 20 |
| Mouse | 9210000 | 109 | 1181.81% | 129.28% | 3.6e-11 | 21 |
| Object::Tiny::RW::XS | 11000000 | 94 | 1375.12% | 99.24% | 1.9e-10 | 20 |
| Moos | 10700000 | 93.8 | 1384.43% | 97.99% | 8e-11 | 20 |
| Moops | 11100000 | 90.4 | 1439.42% | 90.91% | 4.9e-11 | 20 |
| Class::XSAccessor | 11000000 | 88 | 1473.83% | 86.74% | 9e-11 | 20 |
| Mojo::Base::XS | 11300000 | 88.4 | 1474.96% | 86.61% | 7.8e-11 | 20 |
| Moo | 11000000 | 88 | 1485.57% | 85.36% | 1e-10 | 24 |
| Class::XSAccessor::Array | 13000000 | 75 | 1763.55% | 57.71% | 1.3e-10 | 20 |
| raw hash access | 17000000 | 60 | 2229.43% | 26.17% | 7.4e-11 | 21 |
| raw array access | 21000000 | 47 | 2838.97% | 0.00% | 1.5e-10 | 20 |
+------------------------------------+-----------+-----------+-----------------------+-----------------------+---------+---------+
The above result formatted in L<Benchmark.pm|Benchmark> style:
Rate Simple::Accessor Class::Accessor::PackedString::Set Class::Accessor::PackedString Class::Accessor Class::InsideOut Object::Pad Object::Tiny::RW Moose Class::Struct Class::Accessor::Array Moj...
Simple::Accessor 718000/s -- -49% -63% -65% -73% -81% -82% -82% -83% -84% ...
Class::Accessor::PackedString::Set 1430000/s 98% -- -26% -31% -46% -62% -64% -64% -67% -69% ...
Class::Accessor::PackedString 1950000/s 170% 35% -- -6% -27% -49% -51% -51% -56% -57% ...
Class::Accessor 2080000/s 189% 45% 6% -- -22% -45% -48% -48% -52% -55% ...
Class::InsideOut 2680000/s 273% 87% 38% 29% -- -29% -32% -33% -39% -41% ...
Object::Pad 3830000/s 432% 167% 96% 84% 42% -- -4% -4% -13% -17% ...
Object::Tiny::RW 4100000/s 455% 179% 105% 92% 48% 4% -- 0% -9% -13% ...
Moose 4040000/s 460% 181% 107% 93% 50% 5% 0% -- -8% -12% ...
Class::Struct 4430000/s 515% 209% 127% 112% 64% 15% 10% 9% -- -4% ...
Class::Accessor::Array 4640000/s 543% 223% 137% 122% 72% 20% 15% 14% 4% -- ...
Mojo::Base 4910000/s 581% 242% 151% 135% 82% 27% 22% 21% 10% 5% ...
Object::Simple 5150000/s 616% 260% 164% 147% 91% 34% 28% 27% 16% 11% ...
no generator (hash-based) 5280000/s 635% 269% 171% 154% 96% 38% 32% 31% 19% 14% ...
Class::Tiny 5360000/s 647% 275% 176% 158% 100% 40% 34% 33% 21% 16% ...
Mo 5370000/s 647% 275% 176% 158% 100% 40% 34% 33% 21% 16% ...
no generator (array-based) 5980000/s 732% 318% 207% 187% 122% 56% 49% 48% 35% 29% ...
Mouse 9210000/s 1175% 541% 371% 341% 241% 139% 129% 127% 107% 98% ...
Object::Tiny::RW::XS 11000000/s 1378% 643% 446% 411% 295% 177% 165% 163% 140% 129% ...
Moos 10700000/s 1381% 645% 447% 412% 296% 178% 166% 164% 140% 130% ...
Moops 11100000/s 1437% 673% 468% 431% 311% 188% 176% 174% 150% 138% ...
Mojo::Base::XS 11300000/s 1472% 690% 481% 443% 320% 195% 182% 180% 155% 144% ...
Class::XSAccessor 11000000/s 1479% 694% 484% 446% 322% 196% 184% 181% 156% 145% ...
Moo 11000000/s 1479% 694% 484% 446% 322% 196% 184% 181% 156% 145% ...
Class::XSAccessor::Array 13000000/s 1753% 832% 585% 541% 396% 248% 233% 230% 201% 188% ...
raw hash access 17000000/s 2216% 1065% 756% 701% 520% 334% 316% 313% 276% 260% ...
raw array access 21000000/s 2857% 1387% 993% 922% 691% 455% 431% 427% 380% 359% ...
Legends:
Class::Accessor: participant=Class::Accessor
Class::Accessor::Array: participant=Class::Accessor::Array
Class::Accessor::PackedString: participant=Class::Accessor::PackedString
Class::Accessor::PackedString::Set: participant=Class::Accessor::PackedString::Set
Class::InsideOut: participant=Class::InsideOut
Class::Struct: participant=Class::Struct
Class::Tiny: participant=Class::Tiny
Class::XSAccessor: participant=Class::XSAccessor
Class::XSAccessor::Array: participant=Class::XSAccessor::Array
Mo: participant=Mo
Mojo::Base: participant=Mojo::Base
Mojo::Base::XS: participant=Mojo::Base::XS
Moo: participant=Moo
Moops: participant=Moops
Moos: participant=Moos
Moose: participant=Moose
Mouse: participant=Mouse
Object::Pad: participant=Object::Pad
Object::Simple: participant=Object::Simple
Object::Tiny::RW: participant=Object::Tiny::RW
Object::Tiny::RW::XS: participant=Object::Tiny::RW::XS
Simple::Accessor: participant=Simple::Accessor
no generator (array-based): participant=no generator (array-based)
no generator (hash-based): participant=no generator (hash-based)
raw array access: participant=raw array access
raw hash access: participant=raw hash access
The above result presented as chart:
=begin html
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtAAAAH4CAMAAABUnipoAAAJJmlDQ1BpY2MAAEiJlZVnUJNZF8fv8zzphUASQodQQ5EqJYCUEFoo0quoQOidUEVsiLgCK4qINEWQRQEXXJUia0UUC4uCAhZ0gywCyrpxFVFBWXDfGZ33HT+8/5l7z2/+c+bec8/5cAEgiINlwct7YlK6wNvJjhkYFMwE3yiMn5...
=end html
To display as an interactive HTML table on a browser, you can add option C<--format html+datatables>.
=head1 HOMEPAGE
( run in 2.115 seconds using v1.01-cache-2.11-cpan-0bb4e1dffa6 )