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 )