NAME

Bencher::Scenario::HumanDateParsingModules::Parsing - Benchmark human date parsing modules e.g. DF:Natural, DF:Alami, etc.

VERSION

This document describes version 0.005 of Bencher::Scenario::HumanDateParsingModules::Parsing (from Perl distribution Bencher-Scenarios-HumanDateParsingModules), released on 2016-07-17.

SYNOPSIS

To run benchmark with default option:

% bencher -m HumanDateParsingModules::Parsing

To run module startup overhead benchmark:

% bencher --module-startup -m HumanDateParsingModules::Parsing

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

BENCHMARKED MODULES

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

Date::Extract 0.05.01

DateTime::Format::Alami::EN 0.13

DateTime::Format::Alami::ID 0.13

DateTime::Format::Flexible 0.26

DateTime::Format::Natural 1.03

BENCHMARK PARTICIPANTS

  • DateTime::Format::Alami::EN (perl_code) [lang:en]

    Code template:

    state $parser = DateTime::Format::Alami::EN->new; $parser->parse_datetime(<text>)
  • DateTime::Format::Alami::ID (perl_code) [lang:id]

    Code template:

    state $parser = DateTime::Format::Alami::ID->new; $parser->parse_datetime(<text>)
  • Date::Extract (perl_code) [lang:en]

    Code template:

    state $parser = Date::Extract->new; $parser->extract(<text>)
  • DateTime::Format::Natural (perl_code) [lang:en]

    Code template:

    state $parser = DateTime::Format::Natural->new; $parser->parse_datetime(<text>)
  • DateTime::Format::Flexible (perl_code) [lang:en]

    Code template:

    DateTime::Format::Flexible->parse_datetime(<text>)

BENCHMARK DATASETS

  • 18 feb

  • 18 feb 2011

  • 18 feb 2011 06:30:45

  • today

  • hari ini

SAMPLE BENCHMARK RESULTS

Run on: perl: v5.22.2, CPU: Intel(R) Core(TM) i7-4770 CPU @ 3.40GHz (4 cores), OS: GNU/Linux Debian version 8.0, OS kernel: Linux version 3.16.0-4-amd64.

Benchmark with default options (bencher -m HumanDateParsingModules::Parsing):

#table1#
{dataset=>"18 feb"}
+-----------------------------+-----------+-----------+------------+---------+---------+
| participant                 | rate (/s) | time (ms) | vs_slowest |  errors | samples |
+-----------------------------+-----------+-----------+------------+---------+---------+
| DateTime::Format::Flexible  |       540 |     1.9   |       1    | 1.1e-05 |      21 |
| Date::Extract               |      1120 |     0.89  |       2.08 | 4.3e-07 |      20 |
| DateTime::Format::Alami::EN |      1410 |     0.707 |       2.62 | 6.4e-07 |      20 |
| DateTime::Format::Natural   |      1790 |     0.559 |       3.31 | 2.1e-07 |      20 |
| DateTime::Format::Alami::ID |      2120 |     0.472 |       3.93 | 3.8e-07 |      25 |
+-----------------------------+-----------+-----------+------------+---------+---------+
#table2#
{dataset=>"18 feb 2011"}
+-----------------------------+-----------+-----------+------------+---------+---------+
| participant                 | rate (/s) | time (ms) | vs_slowest |  errors | samples |
+-----------------------------+-----------+-----------+------------+---------+---------+
| DateTime::Format::Alami::EN |       564 |     1.77  |       1    | 9.1e-07 |      20 |
| DateTime::Format::Flexible  |       560 |     1.8   |       1    | 1.2e-05 |      20 |
| Date::Extract               |       773 |     1.29  |       1.37 | 4.8e-07 |      20 |
| DateTime::Format::Alami::ID |       957 |     1.05  |       1.7  | 4.3e-07 |      20 |
| DateTime::Format::Natural   |      1060 |     0.947 |       1.87 | 6.5e-07 |      23 |
+-----------------------------+-----------+-----------+------------+---------+---------+
#table3#
{dataset=>"18 feb 2011 06:30:45"}
+-----------------------------+-----------+-----------+------------+---------+---------+
| participant                 | rate (/s) | time (ms) | vs_slowest |  errors | samples |
+-----------------------------+-----------+-----------+------------+---------+---------+
| DateTime::Format::Flexible  |       550 |     1.8   |       1    | 6.6e-06 |      21 |
| Date::Extract               |       774 |     1.29  |       1.41 | 4.3e-07 |      20 |
| DateTime::Format::Natural   |       984 |     1.02  |       1.79 | 4.8e-07 |      20 |
| DateTime::Format::Alami::EN |      2080 |     0.482 |       3.78 | 4.2e-07 |      21 |
| DateTime::Format::Alami::ID |      2110 |     0.474 |       3.85 | 4.7e-07 |      21 |
+-----------------------------+-----------+-----------+------------+---------+---------+
#table4#
{dataset=>"hari ini"}
+-----------------------------+----------+------+-----------+-----------+------------+---------+---------+
| participant                 | dataset  | perl | rate (/s) | time (μs) | vs_slowest |  errors | samples |
+-----------------------------+----------+------+-----------+-----------+------------+---------+---------+
| DateTime::Format::Alami::ID | hari ini | perl |      5100 |       190 |          1 | 4.1e-07 |      22 |
+-----------------------------+----------+------+-----------+-----------+------------+---------+---------+
#table5#
{dataset=>"today"}
+-----------------------------+-----------+-----------+------------+---------+---------+
| participant                 | rate (/s) | time (ms) | vs_slowest |  errors | samples |
+-----------------------------+-----------+-----------+------------+---------+---------+
| DateTime::Format::Flexible  |       550 |     1.8   |       1    | 9.6e-06 |      20 |
| Date::Extract               |      1550 |     0.646 |       2.83 | 2.7e-07 |      20 |
| DateTime::Format::Natural   |      3160 |     0.317 |       5.77 | 2.5e-07 |      23 |
| DateTime::Format::Alami::EN |      5100 |     0.2   |       9.2  | 3.8e-07 |      25 |
+-----------------------------+-----------+-----------+------------+---------+---------+

Benchmark module startup overhead (bencher -m HumanDateParsingModules::Parsing --module-startup):

#table6#
+-----------------------------+-----------+------------------------+------------+-----------+---------+
| participant                 | time (ms) | mod_overhead_time (ms) | vs_slowest |  errors   | samples |
+-----------------------------+-----------+------------------------+------------+-----------+---------+
| DateTime::Format::Flexible  |      74   |                   71.4 |        1   |   0.00028 |      25 |
| Date::Extract               |      61   |                   58.4 |        1.2 |   0.00018 |      21 |
| DateTime::Format::Natural   |      60   |                   57.4 |        1.2 |   0.00027 |      21 |
| DateTime::Format::Alami::ID |      15   |                   12.4 |        4.9 | 5.7e-05   |      20 |
| DateTime::Format::Alami::EN |      15   |                   12.4 |        4.9 | 2.6e-05   |      20 |
| perl -e1 (baseline)         |       2.6 |                    0   |       29   | 5.3e-06   |      20 |
+-----------------------------+-----------+------------------------+------------+-----------+---------+

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.

HOMEPAGE

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

SOURCE

Source repository is at https://github.com/perlancar/perl-Bencher-Scenarios-DateTimeFormatAlami.

BUGS

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

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) 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.