The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Bencher::Scenario::String::SimpleEscape - Benchmark String::SimpleEscape

VERSION

This document describes version 0.002 of Bencher::Scenario::String::SimpleEscape (from Perl distribution Bencher-Scenario-String-SimpleEscape), released on 2023-01-18.

SYNOPSIS

To run benchmark with default option:

 % bencher -m String::SimpleEscape

To run module startup overhead benchmark:

 % bencher --module-startup -m String::SimpleEscape

For more options (dump scenario, list/include/exclude/add participants, list/include/exclude/add datasets, etc), see bencher or run bencher --help.

DESCRIPTION

BENCHMARKED MODULES

Version numbers shown below are the versions used when running the sample benchmark.

String::Escape 2010.002

String::SimpleEscape 0.001

BENCHMARK PARTICIPANTS

  • String::Escape::backslash (perl_code)

    Function call template:

     String::Escape::backslash(<str>)
  • String::Escape::unbackslash (perl_code)

    Function call template:

     String::Escape::unbackslash(<str>)
  • String::SimpleEscape::simple_escape_string (perl_code)

    Function call template:

     String::SimpleEscape::simple_escape_string(<str>)
  • String::SimpleEscape::simple_unescape_string (perl_code)

    Function call template:

     String::SimpleEscape::simple_unescape_string(<str>)

BENCHMARK DATASETS

  • str0

  • a100

  • backslash100

SAMPLE BENCHMARK RESULTS

Run on: perl: v5.34.0, CPU: Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz (2 cores), OS: GNU/Linux Ubuntu version 20.04, OS kernel: Linux version 5.4.0-91-generic.

Benchmark with default options (bencher -m String::SimpleEscape):

 #table1#
 +----------------------------------------------+--------------+-----------+-----------+-----------------------+-----------------------+---------+---------+
 | participant                                  | dataset      | rate (/s) | time (μs) | pct_faster_vs_slowest | pct_slower_vs_fastest |  errors | samples |
 +----------------------------------------------+--------------+-----------+-----------+-----------------------+-----------------------+---------+---------+
 | String::Escape::backslash                    | backslash100 |   31139.4 |   32.1136 |                 0.00% |             28420.89% | 1.1e-11 |      20 |
 | String::SimpleEscape::simple_escape_string   | backslash100 |   33000   |   30      |                 6.73% |             26623.69% | 1.2e-07 |      20 |
 | String::Escape::unbackslash                  | backslash100 |   39900   |   25      |                28.24% |             22140.90% | 5.5e-09 |      29 |
 | String::SimpleEscape::simple_unescape_string | backslash100 |   59000   |   17      |                90.23% |             14892.95% |   2e-08 |      20 |
 | String::Escape::backslash                    | a100         | 2439000   |    0.41   |              7731.71% |               264.17% | 3.5e-11 |      20 |
 | String::SimpleEscape::simple_escape_string   | a100         | 2720000   |    0.368  |              8627.49% |               226.79% |   2e-10 |      22 |
 | String::Escape::unbackslash                  | a100         | 5060000   |    0.198  |             16135.76% |                75.67% | 8.1e-11 |      34 |
 | String::Escape::unbackslash                  | str0         | 6009000   |    0.1664 |             19195.62% |                47.81% | 1.2e-11 |      20 |
 | String::Escape::backslash                    | str0         | 6160000   |    0.162  |             19668.54% |                44.27% |   1e-10 |      20 |
 | String::SimpleEscape::simple_unescape_string | a100         | 6663000   |    0.1501 |             21296.23% |                33.30% | 1.2e-11 |      26 |
 | String::SimpleEscape::simple_escape_string   | str0         | 8100000   |    0.123  |             25925.57% |                 9.59% | 4.6e-11 |      20 |
 | String::SimpleEscape::simple_unescape_string | str0         | 8900000   |    0.11   |             28420.89% |                 0.00% | 1.6e-10 |      20 |
 +----------------------------------------------+--------------+-----------+-----------+-----------------------+-----------------------+---------+---------+

Formatted as Benchmark.pm result:

                              Rate  SE:b backslash100  SS:s_e_s backslash100  SE:u backslash100  SS:s_u_s backslash100  SE:b a100  SS:s_e_s a100  SE:u a100  SE:u str0  SE:b str0  SS:s_u_s a100  SS:s_e_s str0  SS:s_u_s str0 
  SE:b backslash100      31139.4/s                 --                    -6%               -22%                   -47%       -98%           -98%       -99%       -99%       -99%           -99%           -99%           -99% 
  SS:s_e_s backslash100    33000/s                 7%                     --               -16%                   -43%       -98%           -98%       -99%       -99%       -99%           -99%           -99%           -99% 
  SE:u backslash100        39900/s                28%                    19%                 --                   -31%       -98%           -98%       -99%       -99%       -99%           -99%           -99%           -99% 
  SS:s_u_s backslash100    59000/s                88%                    76%                47%                     --       -97%           -97%       -98%       -99%       -99%           -99%           -99%           -99% 
  SE:b a100              2439000/s              7732%                  7217%              5997%                  4046%         --           -10%       -51%       -59%       -60%           -63%           -70%           -73% 
  SS:s_e_s a100          2720000/s              8626%                  8052%              6693%                  4519%        11%             --       -46%       -54%       -55%           -59%           -66%           -70% 
  SE:u a100              5060000/s             16118%                 15051%             12526%                  8485%       107%            85%         --       -15%       -18%           -24%           -37%           -44% 
  SE:u str0              6009000/s             19199%                 17928%             14924%                 10116%       146%           121%        18%         --        -2%            -9%           -26%           -33% 
  SE:b str0              6160000/s             19723%                 18418%             15332%                 10393%       153%           127%        22%         2%         --            -7%           -24%           -32% 
  SS:s_u_s a100          6663000/s             21294%                 19886%             16555%                 11225%       173%           145%        31%        10%         7%             --           -18%           -26% 
  SS:s_e_s str0          8100000/s             26008%                 24290%             20225%                 13721%       233%           199%        60%        35%        31%            22%             --           -10% 
  SS:s_u_s str0          8900000/s             29094%                 27172%             22627%                 15354%       272%           234%        80%        51%        47%            36%            11%             -- 
 
 Legends:
   SE:b a100: dataset=a100 participant=String::Escape::backslash
   SE:b backslash100: dataset=backslash100 participant=String::Escape::backslash
   SE:b str0: dataset=str0 participant=String::Escape::backslash
   SE:u a100: dataset=a100 participant=String::Escape::unbackslash
   SE:u backslash100: dataset=backslash100 participant=String::Escape::unbackslash
   SE:u str0: dataset=str0 participant=String::Escape::unbackslash
   SS:s_e_s a100: dataset=a100 participant=String::SimpleEscape::simple_escape_string
   SS:s_e_s backslash100: dataset=backslash100 participant=String::SimpleEscape::simple_escape_string
   SS:s_e_s str0: dataset=str0 participant=String::SimpleEscape::simple_escape_string
   SS:s_u_s a100: dataset=a100 participant=String::SimpleEscape::simple_unescape_string
   SS:s_u_s backslash100: dataset=backslash100 participant=String::SimpleEscape::simple_unescape_string
   SS:s_u_s str0: dataset=str0 participant=String::SimpleEscape::simple_unescape_string

Benchmark module startup overhead (bencher -m String::SimpleEscape --module-startup):

 #table2#
 +----------------------+-----------+-------------------+-----------------------+-----------------------+---------+---------+
 | participant          | time (ms) | mod_overhead_time | pct_faster_vs_slowest | pct_slower_vs_fastest |  errors | samples |
 +----------------------+-----------+-------------------+-----------------------+-----------------------+---------+---------+
 | String::Escape       |      15   |               9   |                 0.00% |               144.86% | 7.6e-05 |      21 |
 | String::SimpleEscape |       8.9 |               2.9 |                64.03% |                49.28% | 4.6e-05 |      20 |
 | perl -e1 (baseline)  |       6   |               0   |               144.86% |                 0.00% | 2.7e-05 |      21 |
 +----------------------+-----------+-------------------+-----------------------+-----------------------+---------+---------+

Formatted as Benchmark.pm result:

                          Rate   S:E   S:S  perl -e1 (baseline) 
  S:E                   66.7/s    --  -40%                 -60% 
  S:S                  112.4/s   68%    --                 -32% 
  perl -e1 (baseline)  166.7/s  150%   48%                   -- 
 
 Legends:
   S:E: mod_overhead_time=9 participant=String::Escape
   S:S: mod_overhead_time=2.9 participant=String::SimpleEscape
   perl -e1 (baseline): mod_overhead_time=0 participant=perl -e1 (baseline)

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-Scenario-String-SimpleEscape.

SOURCE

Source repository is at https://github.com/perlancar/perl-Bencher-Scenario-String-SimpleEscape.

AUTHOR

perlancar <perlancar@cpan.org>

CONTRIBUTING

To contribute, you can send patches by email/via RT, or send pull requests on GitHub.

Most of the time, you don't need to build the distribution yourself. You can simply modify the code, then test via:

 % prove -l

If you want to build the distribution (e.g. to try to install it locally on your system), you can install Dist::Zilla, Dist::Zilla::PluginBundle::Author::PERLANCAR, Pod::Weaver::PluginBundle::Author::PERLANCAR, and sometimes one or two other Dist::Zilla- and/or Pod::Weaver plugins. Any additional steps required beyond that are considered a bug and can be reported to me.

COPYRIGHT AND LICENSE

This software is copyright (c) 2023 by perlancar <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.

BUGS

Please report any bugs or feature requests on the bugtracker website https://rt.cpan.org/Public/Dist/Display.html?Name=Bencher-Scenario-String-SimpleEscape

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.