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::Allocations - Benchmark allocations

VERSION

This document describes version 0.040 of Bencher::Scenario::Allocations (from Perl distribution Bencher-Scenario-Allocations), released on 2021-07-31.

SYNOPSIS

To run benchmark with default option:

 % bencher -m Allocations

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.

BENCHMARK PARTICIPANTS

  • 1k-array0 (perl_code)

    Allocating empty array 1000 times.

    Code template:

     my $val; for (1..1000) { $val = [] }
  • 1k-hash0 (perl_code)

    Allocating empty hash 1000 times.

    Code template:

     my $val; for (1..1000) { $val = {} }
  • 1k-array1 (perl_code)

    Allocating 1-element array 1000 times.

    Code template:

     my $val; for (1..1000) { $val = [1] }
  • 1k-hash1 (perl_code)

    Allocating 1-key hash 1000 times.

    Code template:

     my $val; for (1..1000) { $val = {a=>1} }
  • 1k-array5 (perl_code)

    Allocating 5-element array 1000 times.

    Code template:

     my $val; for (1..1000) { $val = [1..5] }
  • 1k-hash5 (perl_code)

    Allocating 5-key hash 1000 times.

    Code template:

     my $val; for (1..1000) { $val = {a=>1, b=>2, c=>3, d=>4, e=>5} }
  • 1k-array10 (perl_code)

    Allocating 10-element array 1000 times.

    Code template:

     my $val; for (1..1000) { $val = [1..10] }
  • 1k-hash10 (perl_code)

    Allocating 10-key hash 1000 times.

    Code template:

     my $val; for (1..1000) { $val = {1..20} }
  • 1k-array100 (perl_code)

    Allocating 100-element array 1000 times.

    Code template:

     my $val; for (1..1000) { $val = [1..100] }
  • 1k-hash100 (perl_code)

    Allocating 100-key hash 1000 times.

    Code template:

     my $val; for (1..1000) { $val = {1..200} }

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 Allocations

Result formatted as table:

 #table1#
 | participant | rate (/s) |  time (ms) | pct_faster_vs_slowest | pct_slower_vs_fastest |  errors | samples |
 |-------------+-----------+------------+-----------------------+-----------------------+---------+---------|
 | 1k-hash100  |   150     | 6.5        |                 0.00% |              8882.72% | 6.8e-06 |      20 |
 | 1k-array100 |   813     | 1.23       |               427.13% |              1604.08% |   2e-07 |      23 |
 | 1k-hash10   |  1370     | 0.728      |               791.05% |               908.10% | 1.6e-07 |      20 |
 | 1k-hash5    |  2680     | 0.372      |              1640.85% |               416.00% |   5e-08 |      23 |
 | 1k-array10  |  4293.021 | 0.2329362  |              2683.74% |               222.68% | 5.7e-12 |      22 |
 | 1k-hash1    |  5900     | 0.17       |              3743.94% |               133.69% | 2.1e-07 |      21 |
 | 1k-array5   |  6190     | 0.162      |              3913.30% |               123.82% | 1.6e-07 |      21 |
 | 1k-array1   |  9803.81  | 0.102001   |              6257.13% |                41.30% |   0     |      20 |
 | 1k-hash0    | 12204.32  | 0.08193819 |              7813.71% |                13.51% | 5.7e-12 |      20 |
 | 1k-array0   | 13852.9   | 0.0721869  |              8882.72% |                 0.00% |   0     |      20 |

The above result formatted in Benchmark.pm style:

                     Rate  1k-hash100  1k-array100  1k-hash10  1k-hash5  1k-array10  1k-hash1  1k-array5  1k-array1  1k-hash0  1k-array0 
  1k-hash100        150/s          --         -81%       -88%      -94%        -96%      -97%       -97%       -98%      -98%       -98% 
  1k-array100       813/s        428%           --       -40%      -69%        -81%      -86%       -86%       -91%      -93%       -94% 
  1k-hash10        1370/s        792%          68%         --      -48%        -68%      -76%       -77%       -85%      -88%       -90% 
  1k-hash5         2680/s       1647%         230%        95%        --        -37%      -54%       -56%       -72%      -77%       -80% 
  1k-array10   4293.021/s       2690%         428%       212%       59%          --      -27%       -30%       -56%      -64%       -69% 
  1k-hash1         5900/s       3723%         623%       328%      118%         37%        --        -4%       -39%      -51%       -57% 
  1k-array5        6190/s       3912%         659%       349%      129%         43%        4%         --       -37%      -49%       -55% 
  1k-array1     9803.81/s       6272%        1105%       613%      264%        128%       66%        58%         --      -19%       -29% 
  1k-hash0     12204.32/s       7832%        1401%       788%      354%        184%      107%        97%        24%        --       -11% 
  1k-array0     13852.9/s       8904%        1603%       908%      415%        222%      135%       124%        41%       13%         -- 
 
 Legends:
   1k-array0: participant=1k-array0
   1k-array1: participant=1k-array1
   1k-array10: participant=1k-array10
   1k-array100: participant=1k-array100
   1k-array5: participant=1k-array5
   1k-hash0: participant=1k-hash0
   1k-hash1: participant=1k-hash1
   1k-hash10: participant=1k-hash10
   1k-hash100: participant=1k-hash100
   1k-hash5: participant=1k-hash5

The above result presented as chart:

To display as an interactive HTML table on a browser, you can add option --format html+datatables.

CONTRIBUTOR

perlancar (@pc-office) <perlancar@gmail.com>

HOMEPAGE

Please visit the project's homepage at https://metacpan.org/release/Bencher-Scenario-Allocations.

SOURCE

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

BUGS

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

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.

AUTHOR

perlancar <perlancar@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2021, 2016, 2015 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.