NAME
Bencher::Scenario::Accessors::ClassStartup - Benchmark startup of classes using various accessor generators
VERSION
This document describes version 0.150 of Bencher::Scenario::Accessors::ClassStartup (from Perl distribution Bencher-Scenarios-Accessors), released on 2021-08-03.
SYNOPSIS
To run benchmark with default option:
% bencher -m Accessors::ClassStartup
For more options (dump scenario, list/include/exclude/add participants, list/include/exclude/add datasets, etc), see bencher or run bencher --help
.
DESCRIPTION
Packaging a benchmark script as a Bencher scenario makes it convenient to include/exclude/add participants/datasets (either via CLI or Perl code), send the result to a central repository, among others . See Bencher and bencher (CLI) for more details.
BENCHMARKED MODULES
Version numbers shown below are the versions used when running the sample benchmark.
Class::Accessor 0.51
Class::Accessor::Array 0.032
Class::Accessor::PackedString 0.001
Class::Accessor::PackedString::Set 0.001
Class::InsideOut 1.14
Class::Struct 0.66
Class::Tiny 1.008
Class::XSAccessor 1.19
Mo 0.40
Mojo::Base::XS 0.07
Moo 2.004004
Moops 0.038
Moos 0.30
Moose 2.2015
Mouse v2.5.10
Object::Pad 0.46
Object::Simple 3.19
Object::Tiny 1.09
Object::Tiny::RW 1.07
Object::Tiny::RW::XS 0.04
Object::Tiny::XS 1.01
Perl::Examples::Accessors::Array 0.132
Perl::Examples::Accessors::ClassAccessor 0.132
Perl::Examples::Accessors::ClassAccessorArray 0.132
Perl::Examples::Accessors::ClassAccessorPackedString 0.132
Perl::Examples::Accessors::ClassAccessorPackedStringSet 0.132
Perl::Examples::Accessors::ClassInsideOut 0.132
Perl::Examples::Accessors::ClassStruct 0.132
Perl::Examples::Accessors::ClassTiny 0.132
Perl::Examples::Accessors::ClassXSAccessor 0.132
Perl::Examples::Accessors::ClassXSAccessorArray 0.132
Perl::Examples::Accessors::Hash 0.132
Perl::Examples::Accessors::Mo 0.132
Perl::Examples::Accessors::MojoBase 0.132
Perl::Examples::Accessors::MojoBaseXS 0.132
Perl::Examples::Accessors::Moo 0.132
Perl::Examples::Accessors::Moops 0.132
Perl::Examples::Accessors::Moos 0.132
Perl::Examples::Accessors::Moose 0.132
Perl::Examples::Accessors::Mouse 0.132
Perl::Examples::Accessors::ObjectPad 0.132
Perl::Examples::Accessors::ObjectSimple 0.132
Perl::Examples::Accessors::ObjectTiny 0.132
Perl::Examples::Accessors::ObjectTinyRW 0.132
Perl::Examples::Accessors::ObjectTinyRWXS 0.132
Perl::Examples::Accessors::ObjectTinyXS 0.132
Perl::Examples::Accessors::Scalar 0.132
Perl::Examples::Accessors::SimpleAccessor 0.132
Simple::Accessor 1.13
BENCHMARK PARTICIPANTS
Perl::Examples::Accessors::ClassAccessorPackedString (perl_code)
Perl::Examples::Accessors::ClassAccessorArray (perl_code)
Perl::Examples::Accessors::MojoBase (perl_code)
Perl::Examples::Accessors::ObjectTiny (perl_code)
Perl::Examples::Accessors::SimpleAccessor (perl_code)
Perl::Examples::Accessors::ObjectTinyRW (perl_code)
Perl::Examples::Accessors::Moose (perl_code)
Perl::Examples::Accessors::Scalar (perl_code)
Perl::Examples::Accessors::Moos (perl_code)
Perl::Examples::Accessors::ObjectPad (perl_code)
Perl::Examples::Accessors::ObjectTinyXS (perl_code)
Perl::Examples::Accessors::Mouse (perl_code)
Perl::Examples::Accessors::Mo (perl_code)
Perl::Examples::Accessors::ObjectSimple (perl_code)
Perl::Examples::Accessors::Moops (perl_code)
Perl::Examples::Accessors::ClassStruct (perl_code)
Perl::Examples::Accessors::ClassXSAccessor (perl_code)
Perl::Examples::Accessors::ObjectTinyRWXS (perl_code)
Perl::Examples::Accessors::Array (perl_code)
Perl::Examples::Accessors::Moo (perl_code)
Perl::Examples::Accessors::ClassInsideOut (perl_code)
Perl::Examples::Accessors::MojoBaseXS (perl_code)
Perl::Examples::Accessors::ClassAccessor (perl_code)
Perl::Examples::Accessors::ClassTiny (perl_code)
Perl::Examples::Accessors::Hash (perl_code)
Perl::Examples::Accessors::ClassAccessorPackedStringSet (perl_code)
Perl::Examples::Accessors::ClassXSAccessorArray (perl_code)
BENCHMARK SAMPLE RESULTS
Sample benchmark #1
Run on: perl: v5.34.0, CPU: Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz (4 cores), OS: GNU/Linux LinuxMint version 19, OS kernel: Linux version 5.3.0-68-generic.
Benchmark command (default options):
% bencher -m Accessors::ClassStartup
Result formatted as table:
#table1#
+---------------------------------------------------------+-----------+-------------------+-----------------------+-----------------------+-----------+---------+
| participant | time (ms) | mod_overhead_time | pct_faster_vs_slowest | pct_slower_vs_fastest | errors | samples |
+---------------------------------------------------------+-----------+-------------------+-----------------------+-----------------------+-----------+---------+
| Perl::Examples::Accessors::Moops | 140 | 135 | 0.00% | 2751.06% | 0.0011 | 20 |
| Perl::Examples::Accessors::Moose | 120 | 115 | 24.45% | 2190.99% | 0.00054 | 20 |
| Perl::Examples::Accessors::MojoBase | 90 | 85 | 60.80% | 1673.02% | 0.001 | 21 |
| Perl::Examples::Accessors::Moo | 30 | 25 | 405.55% | 463.95% | 0.00056 | 20 |
| Perl::Examples::Accessors::Mouse | 20 | 15 | 579.46% | 319.60% | 0.00022 | 21 |
| Perl::Examples::Accessors::ClassInsideOut | 20 | 15 | 770.63% | 227.47% | 0.00025 | 20 |
| Perl::Examples::Accessors::Moos | 16 | 11 | 809.64% | 213.43% | 0.00015 | 20 |
| Perl::Examples::Accessors::ObjectPad | 20 | 15 | 830.32% | 206.46% | 0.00017 | 20 |
| Perl::Examples::Accessors::ClassTiny | 10 | 5 | 976.04% | 164.96% | 0.0002 | 20 |
| Perl::Examples::Accessors::ClassXSAccessorArray | 10 | 5 | 1005.80% | 157.83% | 0.00019 | 20 |
| Perl::Examples::Accessors::ObjectTinyRWXS | 10 | 5 | 1021.40% | 154.24% | 0.00019 | 20 |
| Perl::Examples::Accessors::ObjectTinyXS | 10 | 5 | 1088.28% | 139.93% | 0.00016 | 20 |
| Perl::Examples::Accessors::ClassXSAccessor | 10 | 5 | 1088.63% | 139.86% | 0.00026 | 20 |
| Perl::Examples::Accessors::ClassStruct | 10 | 5 | 1118.95% | 133.89% | 0.00022 | 20 |
| Perl::Examples::Accessors::ClassAccessor | 10 | 5 | 1123.35% | 133.05% | 0.00013 | 20 |
| Perl::Examples::Accessors::ObjectSimple | 10 | 5 | 1166.35% | 125.14% | 0.00014 | 20 |
| Perl::Examples::Accessors::MojoBaseXS | 10 | 5 | 1348.32% | 96.85% | 0.00028 | 20 |
| Perl::Examples::Accessors::SimpleAccessor | 8 | 3 | 1632.60% | 64.55% | 0.0002 | 22 |
| Perl::Examples::Accessors::ClassAccessorPackedString | 8.2 | 3.2 | 1660.36% | 61.96% | 8.1e-05 | 22 |
| Perl::Examples::Accessors::ClassAccessorPackedStringSet | 7 | 2 | 1982.56% | 36.90% | 0.00013 | 20 |
| Perl::Examples::Accessors::ObjectTinyRW | 7 | 2 | 2107.67% | 29.14% | 9.3e-05 | 20 |
| Perl::Examples::Accessors::ObjectTiny | 7 | 2 | 2120.42% | 28.40% | 0.00014 | 20 |
| Perl::Examples::Accessors::Mo | 6 | 1 | 2149.49% | 26.74% | 0.00013 | 20 |
| Perl::Examples::Accessors::ClassAccessorArray | 6 | 1 | 2213.42% | 23.24% | 0.00015 | 20 |
| Perl::Examples::Accessors::Array | 6 | 1 | 2243.23% | 21.67% | 0.00013 | 21 |
| Perl::Examples::Accessors::Scalar | 5 | 0 | 2548.51% | 7.65% | 0.00015 | 21 |
| Perl::Examples::Accessors::Hash | 5 | 0 | 2564.36% | 7.01% | 0.00015 | 20 |
| perl -e1 (baseline) | 5 | 0 | 2751.06% | 0.00% | 0.00018 | 20 |
+---------------------------------------------------------+-----------+-------------------+-----------------------+-----------------------+-----------+---------+
The above result formatted in Benchmark.pm style:
Rate Perl::Examples::Accessors::Moops Perl::Examples::Accessors::Moose Perl::Examples::Accessors::MojoBase Perl::Examples::Accessors::Moo Perl::Examples::Accessors::Mouse Perl::Examples::Accessors::ClassInsideOut Perl::Examples::Accessors::ObjectPad Perl::Examples::Accessors::Moos Perl::Examples::Accessors::ClassTiny Perl::Examples::Accessors::ClassXSAccessorArray Perl::Examples::Accessors::ObjectTinyRWXS Perl::Examples::Accessors::ObjectTinyXS Perl::Examples::Accessors::ClassXSAccessor Perl::Examples::Accessors::ClassStruct Perl::Examples::Accessors::ClassAccessor Perl::Examples::Accessors::ObjectSimple Perl::Examples::Accessors::MojoBaseXS Perl::Examples::Accessors::ClassAccessorPackedString Perl::Examples::Accessors::SimpleAccessor Perl::Examples::Accessors::ClassAccessorPackedStringSet Perl::Examples::Accessors::ObjectTinyRW Perl::Examples::Accessors::ObjectTiny Perl::Examples::Accessors::Mo Perl::Examples::Accessors::ClassAccessorArray Perl::Examples::Accessors::Array Perl::Examples::Accessors::Scalar Perl::Examples::Accessors::Hash perl -e1 (baseline)
Perl::Examples::Accessors::Moops 7.1/s -- -14% -35% -78% -85% -85% -85% -88% -92% -92% -92% -92% -92% -92% -92% -92% -92% -94% -94% -95% -95% -95% -95% -95% -95% -96% -96% -96%
Perl::Examples::Accessors::Moose 8.3/s 16% -- -25% -75% -83% -83% -83% -86% -91% -91% -91% -91% -91% -91% -91% -91% -91% -93% -93% -94% -94% -94% -95% -95% -95% -95% -95% -95%
Perl::Examples::Accessors::MojoBase 11.1/s 55% 33% -- -66% -77% -77% -77% -82% -88% -88% -88% -88% -88% -88% -88% -88% -88% -90% -91% -92% -92% -92% -93% -93% -93% -94% -94% -94%
Perl::Examples::Accessors::Moo 33.3/s 366% 300% 200% -- -33% -33% -33% -46% -66% -66% -66% -66% -66% -66% -66% -66% -66% -72% -73% -76% -76% -76% -80% -80% -80% -83% -83% -83%
Perl::Examples::Accessors::Mouse 50.0/s 600% 500% 350% 50% -- 0% 0% -19% -50% -50% -50% -50% -50% -50% -50% -50% -50% -59% -60% -65% -65% -65% -70% -70% -70% -75% -75% -75%
Perl::Examples::Accessors::ClassInsideOut 50.0/s 600% 500% 350% 50% 0% -- 0% -19% -50% -50% -50% -50% -50% -50% -50% -50% -50% -59% -60% -65% -65% -65% -70% -70% -70% -75% -75% -75%
Perl::Examples::Accessors::ObjectPad 50.0/s 600% 500% 350% 50% 0% 0% -- -19% -50% -50% -50% -50% -50% -50% -50% -50% -50% -59% -60% -65% -65% -65% -70% -70% -70% -75% -75% -75%
Perl::Examples::Accessors::Moos 62.5/s 775% 650% 462% 87% 25% 25% 25% -- -37% -37% -37% -37% -37% -37% -37% -37% -37% -48% -50% -56% -56% -56% -62% -62% -62% -68% -68% -68%
Perl::Examples::Accessors::ClassTiny 100.0/s 1300% 1100% 800% 200% 100% 100% 100% 60% -- 0% 0% 0% 0% 0% 0% 0% 0% -18% -19% -30% -30% -30% -40% -40% -40% -50% -50% -50%
Perl::Examples::Accessors::ClassXSAccessorArray 100.0/s 1300% 1100% 800% 200% 100% 100% 100% 60% 0% -- 0% 0% 0% 0% 0% 0% 0% -18% -19% -30% -30% -30% -40% -40% -40% -50% -50% -50%
Perl::Examples::Accessors::ObjectTinyRWXS 100.0/s 1300% 1100% 800% 200% 100% 100% 100% 60% 0% 0% -- 0% 0% 0% 0% 0% 0% -18% -19% -30% -30% -30% -40% -40% -40% -50% -50% -50%
Perl::Examples::Accessors::ObjectTinyXS 100.0/s 1300% 1100% 800% 200% 100% 100% 100% 60% 0% 0% 0% -- 0% 0% 0% 0% 0% -18% -19% -30% -30% -30% -40% -40% -40% -50% -50% -50%
Perl::Examples::Accessors::ClassXSAccessor 100.0/s 1300% 1100% 800% 200% 100% 100% 100% 60% 0% 0% 0% 0% -- 0% 0% 0% 0% -18% -19% -30% -30% -30% -40% -40% -40% -50% -50% -50%
Perl::Examples::Accessors::ClassStruct 100.0/s 1300% 1100% 800% 200% 100% 100% 100% 60% 0% 0% 0% 0% 0% -- 0% 0% 0% -18% -19% -30% -30% -30% -40% -40% -40% -50% -50% -50%
Perl::Examples::Accessors::ClassAccessor 100.0/s 1300% 1100% 800% 200% 100% 100% 100% 60% 0% 0% 0% 0% 0% 0% -- 0% 0% -18% -19% -30% -30% -30% -40% -40% -40% -50% -50% -50%
Perl::Examples::Accessors::ObjectSimple 100.0/s 1300% 1100% 800% 200% 100% 100% 100% 60% 0% 0% 0% 0% 0% 0% 0% -- 0% -18% -19% -30% -30% -30% -40% -40% -40% -50% -50% -50%
Perl::Examples::Accessors::MojoBaseXS 100.0/s 1300% 1100% 800% 200% 100% 100% 100% 60% 0% 0% 0% 0% 0% 0% 0% 0% -- -18% -19% -30% -30% -30% -40% -40% -40% -50% -50% -50%
Perl::Examples::Accessors::ClassAccessorPackedString 122.0/s 1607% 1363% 997% 265% 143% 143% 143% 95% 21% 21% 21% 21% 21% 21% 21% 21% 21% -- -2% -14% -14% -14% -26% -26% -26% -39% -39% -39%
Perl::Examples::Accessors::SimpleAccessor 125.0/s 1650% 1400% 1025% 275% 150% 150% 150% 100% 25% 25% 25% 25% 25% 25% 25% 25% 25% 2% -- -12% -12% -12% -25% -25% -25% -37% -37% -37%
Perl::Examples::Accessors::ClassAccessorPackedStringSet 142.9/s 1900% 1614% 1185% 328% 185% 185% 185% 128% 42% 42% 42% 42% 42% 42% 42% 42% 42% 17% 14% -- 0% 0% -14% -14% -14% -28% -28% -28%
Perl::Examples::Accessors::ObjectTinyRW 142.9/s 1900% 1614% 1185% 328% 185% 185% 185% 128% 42% 42% 42% 42% 42% 42% 42% 42% 42% 17% 14% 0% -- 0% -14% -14% -14% -28% -28% -28%
Perl::Examples::Accessors::ObjectTiny 142.9/s 1900% 1614% 1185% 328% 185% 185% 185% 128% 42% 42% 42% 42% 42% 42% 42% 42% 42% 17% 14% 0% 0% -- -14% -14% -14% -28% -28% -28%
Perl::Examples::Accessors::Mo 166.7/s 2233% 1900% 1400% 400% 233% 233% 233% 166% 66% 66% 66% 66% 66% 66% 66% 66% 66% 36% 33% 16% 16% 16% -- 0% 0% -16% -16% -16%
Perl::Examples::Accessors::ClassAccessorArray 166.7/s 2233% 1900% 1400% 400% 233% 233% 233% 166% 66% 66% 66% 66% 66% 66% 66% 66% 66% 36% 33% 16% 16% 16% 0% -- 0% -16% -16% -16%
Perl::Examples::Accessors::Array 166.7/s 2233% 1900% 1400% 400% 233% 233% 233% 166% 66% 66% 66% 66% 66% 66% 66% 66% 66% 36% 33% 16% 16% 16% 0% 0% -- -16% -16% -16%
Perl::Examples::Accessors::Scalar 200.0/s 2700% 2300% 1700% 500% 300% 300% 300% 220% 100% 100% 100% 100% 100% 100% 100% 100% 100% 63% 60% 39% 39% 39% 19% 19% 19% -- 0% 0%
Perl::Examples::Accessors::Hash 200.0/s 2700% 2300% 1700% 500% 300% 300% 300% 220% 100% 100% 100% 100% 100% 100% 100% 100% 100% 63% 60% 39% 39% 39% 19% 19% 19% 0% -- 0%
perl -e1 (baseline) 200.0/s 2700% 2300% 1700% 500% 300% 300% 300% 220% 100% 100% 100% 100% 100% 100% 100% 100% 100% 63% 60% 39% 39% 39% 19% 19% 19% 0% 0% --
Legends:
Perl::Examples::Accessors::Array: mod_overhead_time=1 participant=Perl::Examples::Accessors::Array
Perl::Examples::Accessors::ClassAccessor: mod_overhead_time=5 participant=Perl::Examples::Accessors::ClassAccessor
Perl::Examples::Accessors::ClassAccessorArray: mod_overhead_time=1 participant=Perl::Examples::Accessors::ClassAccessorArray
Perl::Examples::Accessors::ClassAccessorPackedString: mod_overhead_time=3.2 participant=Perl::Examples::Accessors::ClassAccessorPackedString
Perl::Examples::Accessors::ClassAccessorPackedStringSet: mod_overhead_time=2 participant=Perl::Examples::Accessors::ClassAccessorPackedStringSet
Perl::Examples::Accessors::ClassInsideOut: mod_overhead_time=15 participant=Perl::Examples::Accessors::ClassInsideOut
Perl::Examples::Accessors::ClassStruct: mod_overhead_time=5 participant=Perl::Examples::Accessors::ClassStruct
Perl::Examples::Accessors::ClassTiny: mod_overhead_time=5 participant=Perl::Examples::Accessors::ClassTiny
Perl::Examples::Accessors::ClassXSAccessor: mod_overhead_time=5 participant=Perl::Examples::Accessors::ClassXSAccessor
Perl::Examples::Accessors::ClassXSAccessorArray: mod_overhead_time=5 participant=Perl::Examples::Accessors::ClassXSAccessorArray
Perl::Examples::Accessors::Hash: mod_overhead_time=0 participant=Perl::Examples::Accessors::Hash
Perl::Examples::Accessors::Mo: mod_overhead_time=1 participant=Perl::Examples::Accessors::Mo
Perl::Examples::Accessors::MojoBase: mod_overhead_time=85 participant=Perl::Examples::Accessors::MojoBase
Perl::Examples::Accessors::MojoBaseXS: mod_overhead_time=5 participant=Perl::Examples::Accessors::MojoBaseXS
Perl::Examples::Accessors::Moo: mod_overhead_time=25 participant=Perl::Examples::Accessors::Moo
Perl::Examples::Accessors::Moops: mod_overhead_time=135 participant=Perl::Examples::Accessors::Moops
Perl::Examples::Accessors::Moos: mod_overhead_time=11 participant=Perl::Examples::Accessors::Moos
Perl::Examples::Accessors::Moose: mod_overhead_time=115 participant=Perl::Examples::Accessors::Moose
Perl::Examples::Accessors::Mouse: mod_overhead_time=15 participant=Perl::Examples::Accessors::Mouse
Perl::Examples::Accessors::ObjectPad: mod_overhead_time=15 participant=Perl::Examples::Accessors::ObjectPad
Perl::Examples::Accessors::ObjectSimple: mod_overhead_time=5 participant=Perl::Examples::Accessors::ObjectSimple
Perl::Examples::Accessors::ObjectTiny: mod_overhead_time=2 participant=Perl::Examples::Accessors::ObjectTiny
Perl::Examples::Accessors::ObjectTinyRW: mod_overhead_time=2 participant=Perl::Examples::Accessors::ObjectTinyRW
Perl::Examples::Accessors::ObjectTinyRWXS: mod_overhead_time=5 participant=Perl::Examples::Accessors::ObjectTinyRWXS
Perl::Examples::Accessors::ObjectTinyXS: mod_overhead_time=5 participant=Perl::Examples::Accessors::ObjectTinyXS
Perl::Examples::Accessors::Scalar: mod_overhead_time=0 participant=Perl::Examples::Accessors::Scalar
Perl::Examples::Accessors::SimpleAccessor: mod_overhead_time=3 participant=Perl::Examples::Accessors::SimpleAccessor
perl -e1 (baseline): mod_overhead_time=0 participant=perl -e1 (baseline)
The above result presented as chart:
To display as an interactive HTML table on a browser, you can add option --format html+datatables
.
HOMEPAGE
Please visit the project's homepage at https://metacpan.org/release/Bencher-Scenarios-Accessors.
SOURCE
Source repository is at https://github.com/perlancar/perl-Bencher-Scenarios-Accessors.
BUGS
Please report any bugs or feature requests on the bugtracker website https://rt.cpan.org/Public/Dist/Display.html?Name=Bencher-Scenarios-Accessors
When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.
SEE ALSO
AUTHOR
perlancar <perlancar@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2021, 2017, 2016 by perlancar@cpan.org.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.