Acme-CPANModules-TextTable
view release on metacpan or search on metacpan
lib/Acme/CPANModules/TextTable.pm view on Meta::CPAN
color_data => 0,
box_char => 0,
multiline_data => {value=>0, summary=>'Newlines stripped'},
},
},
{
module => 'Text::Table',
bench_code => sub {
my ($table) = @_;
my $t = Text::Table->new(@{ $table->[0] });
$t->load(@{ $table }[1..@$table-1]);
$t;
},
features => {
wide_char_data => 0,
color_data => 0,
box_char => {value=>undef, summary=>'Does not draw borders'},
multiline_data => 1,
},
},
{
module => 'Text::Table::Tiny',
description => <<'_',
The simple and tiny table-generating module which I liked back in 2012 (v0.03).
It employs an sprintf() trick to generate a single row. This module started my
personal experiments creating other table-generating modules (at last count I've
created no fewer than 15 of them!).
_
bench_code => sub {
my ($table) = @_;
Text::Table::Tiny::table(rows=>$table, header_row=>1);
},
features => {
wide_char_data => 1,
color_data => 1,
box_char => 1,
multiline_data => 0,
},
},
{
module => 'Text::Table::TinyBorderStyle',
bench_code => sub {
my ($table) = @_;
Text::Table::TinyBorderStyle::table(rows=>$table, header_row=>1);
},
features => {
wide_char_data => 0,
color_data => 0,
box_char => 1,
multiline_data => 0,
},
},
{
module => 'Text::Table::More',
description => <<'_',
A module I wrote in early 2021. Main distinguishing feature is support for
rowspan/clospan. I plan to add more features to this module on an as-needed
basic. This module is now preferred to <pm:Text::ANSITable>, although currently
it does not offer nearly as many formatting options as Text::ANSITable.
_
bench_code => sub {
my ($table) = @_;
Text::Table::More::generate_table(rows=>$table, header_row=>1);
},
features => {
align_cell => 1,
align_column => 1,
align_row => 1,
box_char => 1,
color_data => 1,
color_theme => 0,
colspan => 1,
custom_border => 1,
custom_color => 0,
multiline_data => 1,
rowspan => 1,
speed => "slow",
valign_cell => 1,
valign_column => 1,
valign_row => 1,
wide_char_data => 1,
column_width => 0, # todo
per_column_width => 0, # todo
row_height => 0, # todo
per_row_height => 0, # todo
pad => 0, # todo
vpad => 0, # todo
},
},
{
module => 'Text::Table::Sprintf',
description => <<'_',
A performant (see benchmark result) and lightweight (a page of code, no use of
modules at all), but with minimal extra features.
_
bench_code => sub {
my ($table) = @_;
Text::Table::Sprintf::table(rows=>$table, header_row=>1);
},
features => {
box_char => 0,
color_data => 0,
multiline_data => 0,
speed => {value=>"fast", summary=>"The fastest among the others in this list"},
wide_char_data => 0,
},
},
{
module => 'Text::Table::TinyColor',
bench_code => sub {
my ($table) = @_;
Text::Table::TinyColor::table(rows=>$table, header_row=>1);
},
features => {
wide_char_data => 0,
lib/Acme/CPANModules/TextTable.pm view on Meta::CPAN
support. This module, aside from doing its rendering, can also be told to pass
rendering to HTML, CSV, or other text table module like
L<Text::UnicodeBox::Table>); so in this way it is similar to
L<Text::Table::Any>.
=item L<Text::ANSITable>
Author: L<PERLANCAR|https://metacpan.org/author/PERLANCAR>
This 2013 project was my take in creating a text table module that can handle
color, multiline text, wide characters. I also threw in various formatting
options, e.g. per-column/row/cell align/valign/pad/vpad, conditional formatting,
and so on. I even added a couple of features I never used: hiding rows and
specifying columns to display which can be in different order from the original
specified columns or can contain the same original columns multiple times. I
think this module offers the most formatting options on CPAN.
In early 2021, I needed colspan/rowspan and I implemented this in a new module:
L<Text::Table::Span> (later renamed to L<Text::Table::More>). I plan to add
this feature too to Text::ANSITable, but in the meantime I'm also adding more
formatting options which I need to Text::Table::More.
=item L<Text::ASCIITable>
Author: L<LUNATIC|https://metacpan.org/author/LUNATIC>
=item L<Text::FormatTable>
Author: L<TREY|https://metacpan.org/author/TREY>
=item L<Text::MarkdownTable>
Author: L<VOJ|https://metacpan.org/author/VOJ>
=item L<Text::Table>
Author: L<SHLOMIF|https://metacpan.org/author/SHLOMIF>
=item L<Text::Table::Tiny>
Author: L<NEILB|https://metacpan.org/author/NEILB>
The simple and tiny table-generating module which I liked back in 2012 (v0.03).
It employs an sprintf() trick to generate a single row. This module started my
personal experiments creating other table-generating modules (at last count I've
created no fewer than 15 of them!).
=item L<Text::Table::TinyBorderStyle>
Author: L<PERLANCAR|https://metacpan.org/author/PERLANCAR>
=item L<Text::Table::More>
Author: L<PERLANCAR|https://metacpan.org/author/PERLANCAR>
A module I wrote in early 2021. Main distinguishing feature is support for
rowspan/clospan. I plan to add more features to this module on an as-needed
basic. This module is now preferred to L<Text::ANSITable>, although currently
it does not offer nearly as many formatting options as Text::ANSITable.
=item L<Text::Table::Sprintf>
Author: L<PERLANCAR|https://metacpan.org/author/PERLANCAR>
A performant (see benchmark result) and lightweight (a page of code, no use of
modules at all), but with minimal extra features.
=item L<Text::Table::TinyColor>
Author: L<PERLANCAR|https://metacpan.org/author/PERLANCAR>
=item L<Text::Table::TinyColorWide>
Author: L<PERLANCAR|https://metacpan.org/author/PERLANCAR>
=item L<Text::Table::TinyWide>
Author: L<PERLANCAR|https://metacpan.org/author/PERLANCAR>
=item L<Text::Table::Org>
Author: L<PERLANCAR|https://metacpan.org/author/PERLANCAR>
=item L<Text::Table::CSV>
Author: L<PERLANCAR|https://metacpan.org/author/PERLANCAR>
=item L<Text::Table::HTML>
Author: L<PERLANCAR|https://metacpan.org/author/PERLANCAR>
=item L<Text::Table::HTML::DataTables>
Author: L<PERLANCAR|https://metacpan.org/author/PERLANCAR>
=item L<Text::TabularDisplay>
Author: L<DARREN|https://metacpan.org/author/DARREN>
=back
=head1 ACME::CPANMODULES FEATURE COMPARISON MATRIX
+-------------------------------+----------------+------------------+---------------+--------------+----------------+-----------------+-------------+-------------------+------------------+---------------------+--------------+------------+-----------...
| module | align_cell *1) | align_column *2) | align_row *3) | box_char *4) | color_data *5) | color_theme *6) | colspan *7) | custom_border *8) | custom_color *9) | multiline_data *10) | rowspan *11) | speed *12) | valign_cel...
+-------------------------------+----------------+------------------+---------------+--------------+----------------+-----------------+-------------+-------------------+------------------+---------------------+--------------+------------+-----------...
| Text::Table::Any | N/A *22) | N/A *22) | N/A *22) | N/A *22) | N/A *22) | N/A *22) | N/A *22) | N/A *22) | N/A *22) | N/A *22) | N/A *22) | N/A *22) | N/A *22) ...
| Text::SimpleTable | no | no | no | no | no | no | no | yes *23) | no | no | no | fast *24) | no ...
| Text::UnicodeBox::Table | no | yes | N/A | no | yes | no | no | yes | no | no | no | slow | N/A ...
| Text::Table::Manifold | no | yes | N/A | N/A | yes | no | no | no *25) | no | no | no | N/A | N/A ...
| Text::ANSITable | yes | yes | yes | yes | yes | yes | no | yes | yes | yes | no | slow | yes ...
| Text::ASCIITable | N/A | N/A | N/A | no | no | N/A | N/A | N/A | N/A | yes | N/A | N/A | N/A ...
| Text::FormatTable | N/A | N/A | N/A | no | no | N/A | N/A | N/A | N/A | yes | N/A | N/A | N/A ...
| Text::MarkdownTable | N/A | N/A | N/A | no | no | N/A | N/A | N/A | N/A | no *26) | N/A | N/A | N/A ...
| Text::Table | N/A | N/A | N/A | N/A *27) | no | N/A | N/A | N/A | N/A | yes | N/A | N/A | N/A ...
| Text::Table::Tiny | N/A | N/A | N/A | yes | yes | N/A | N/A | N/A | N/A | no | N/A | N/A | N/A ...
lib/Acme/CPANModules/TextTable.pm view on Meta::CPAN
=item * Text::Table::HTML (perl_code)
L<Text::Table::HTML>
=item * Text::Table::HTML::DataTables (perl_code)
L<Text::Table::HTML::DataTables>
=item * Text::TabularDisplay (perl_code)
L<Text::TabularDisplay>
=back
=head1 BENCHMARK DATASETS
=over
=item * tiny (1x1)
=item * small (3x5)
=item * wide (30x5)
=item * long (3x300)
=item * large (30x300)
=item * multiline data (2x1) (not included by default)
=item * wide char data (1x2) (not included by default)
=item * color data (1x2) (not included by default)
=back
=head1 BENCHMARK SAMPLE RESULTS
=head2 Sample benchmark #1
Run on: perl: I<< v5.38.0 >>, 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 --cpanmodules-module TextTable
Result formatted as table (split, part 1 of 5):
#table1#
{dataset=>"large (30x300)"}
+-------------------------------+-----------+-----------+-----------------------+-----------------------+-----------+---------+
| participant | rate (/s) | time (ms) | pct_faster_vs_slowest | pct_slower_vs_fastest | errors | samples |
+-------------------------------+-----------+-----------+-----------------------+-----------------------+-----------+---------+
| Text::UnicodeBox::Table | 0.92 | 1100 | 0.00% | 35566.44% | 0.0024 | 20 |
| Text::ANSITable | 1.8 | 560 | 94.68% | 18220.90% | 0.0012 | 20 |
| Text::Table::More | 2.5 | 400 | 167.94% | 13211.33% | 0.00094 | 20 |
| Text::ASCIITable | 9.6 | 100 | 934.43% | 3347.94% | 0.00076 | 20 |
| Text::Table::TinyColorWide | 10 | 70 | 1365.67% | 2333.45% | 0.0008 | 20 |
| Text::FormatTable | 15 | 69 | 1474.71% | 2164.95% | 0.00063 | 20 |
| Text::Table::TinyWide | 20 | 50 | 1927.24% | 1659.36% | 0.00058 | 20 |
| Text::SimpleTable | 26 | 38 | 2719.79% | 1164.86% | 0.00033 | 20 |
| Text::Table::Manifold | 30 | 30 | 3432.47% | 909.67% | 0.00039 | 20 |
| Text::Table::Tiny | 30 | 30 | 3660.87% | 848.36% | 0.00043 | 20 |
| Text::TabularDisplay | 40 | 30 | 4123.89% | 744.40% | 0.00046 | 20 |
| Text::Table::HTML | 50 | 20 | 4776.96% | 631.33% | 0.00036 | 20 |
| Text::Table::TinyColor | 50 | 20 | 5139.30% | 580.75% | 0.00056 | 20 |
| Text::MarkdownTable | 60 | 20 | 6854.90% | 412.82% | 0.00035 | 20 |
| Text::Table | 90 | 10 | 9175.49% | 284.52% | 0.00026 | 20 |
| Text::Table::HTML::DataTables | 100 | 10 | 10410.10% | 239.35% | 0.00018 | 20 |
| Text::Table::TinyBorderStyle | 200 | 6 | 19509.01% | 81.89% | 0.00011 | 20 |
| Text::Table::Org | 200 | 5 | 20190.87% | 75.78% | 0.00013 | 20 |
| Text::Table::CSV | 200 | 4.9 | 21769.21% | 63.09% | 4.3e-05 | 20 |
| Text::Table::Sprintf | 300 | 4 | 28690.71% | 23.88% | 7.4e-05 | 20 |
| Text::Table::Any | 300 | 3 | 35566.44% | 0.00% | 3.3e-05 | 20 |
+-------------------------------+-----------+-----------+-----------------------+-----------------------+-----------+---------+
The above result formatted in L<Benchmark.pm|Benchmark> style:
Rate Text::UnicodeBox::Table Text::ANSITable Text::Table::More Text::ASCIITable Text::Table::TinyColorWide Text::FormatTable Text::Table::TinyWide Text::SimpleTable Text::Table::Manifold Text::Table::Tiny ...
Text::UnicodeBox::Table 0.92/s -- -49% -63% -90% -93% -93% -95% -96% -97% -97% ...
Text::ANSITable 1.8/s 96% -- -28% -82% -87% -87% -91% -93% -94% -94% ...
Text::Table::More 2.5/s 175% 39% -- -75% -82% -82% -87% -90% -92% -92% ...
Text::ASCIITable 9.6/s 1000% 459% 300% -- -30% -31% -50% -62% -70% -70% ...
Text::Table::TinyColorWide 10/s 1471% 700% 471% 42% -- -1% -28% -45% -57% -57% ...
Text::FormatTable 15/s 1494% 711% 479% 44% 1% -- -27% -44% -56% -56% ...
Text::Table::TinyWide 20/s 2100% 1019% 700% 100% 39% 37% -- -24% -40% -40% ...
Text::SimpleTable 26/s 2794% 1373% 952% 163% 84% 81% 31% -- -21% -21% ...
Text::Table::Manifold 30/s 3566% 1766% 1233% 233% 133% 129% 66% 26% -- 0% ...
Text::Table::Tiny 30/s 3566% 1766% 1233% 233% 133% 129% 66% 26% 0% -- ...
Text::TabularDisplay 40/s 3566% 1766% 1233% 233% 133% 129% 66% 26% 0% 0% ...
Text::Table::HTML 50/s 5400% 2700% 1900% 400% 250% 245% 150% 89% 50% 50% ...
Text::Table::TinyColor 50/s 5400% 2700% 1900% 400% 250% 245% 150% 89% 50% 50% ...
Text::MarkdownTable 60/s 5400% 2700% 1900% 400% 250% 245% 150% 89% 50% 50% ...
Text::Table 90/s 10900% 5500% 3900% 900% 600% 590% 400% 280% 200% 200% ...
Text::Table::HTML::DataTables 100/s 10900% 5500% 3900% 900% 600% 590% 400% 280% 200% 200% ...
Text::Table::TinyBorderStyle 200/s 18233% 9233% 6566% 1566% 1066% 1050% 733% 533% 400% 400% ...
Text::Table::Org 200/s 21900% 11100% 7900% 1900% 1300% 1280% 900% 660% 500% 500% ...
Text::Table::CSV 200/s 22348% 11328% 8063% 1940% 1328% 1308% 920% 675% 512% 512% ...
Text::Table::Sprintf 300/s 27400% 13900% 9900% 2400% 1650% 1625% 1150% 850% 650% 650% ...
Text::Table::Any 300/s 36566% 18566% 13233% 3233% 2233% 2200% 1566% 1166% 900% 900% ...
Legends:
Text::ANSITable: participant=Text::ANSITable
Text::ASCIITable: participant=Text::ASCIITable
Text::FormatTable: participant=Text::FormatTable
Text::MarkdownTable: participant=Text::MarkdownTable
Text::SimpleTable: participant=Text::SimpleTable
Text::Table: participant=Text::Table
Text::Table::Any: participant=Text::Table::Any
Text::Table::CSV: participant=Text::Table::CSV
Text::Table::HTML: participant=Text::Table::HTML
Text::Table::HTML::DataTables: participant=Text::Table::HTML::DataTables
Text::Table::Manifold: participant=Text::Table::Manifold
Text::Table::More: participant=Text::Table::More
Text::Table::Org: participant=Text::Table::Org
Text::Table::Sprintf: participant=Text::Table::Sprintf
Text::Table::Tiny: participant=Text::Table::Tiny
Text::Table::TinyBorderStyle: participant=Text::Table::TinyBorderStyle
Text::Table::TinyColor: participant=Text::Table::TinyColor
Text::Table::TinyColorWide: participant=Text::Table::TinyColorWide
Text::Table::TinyWide: participant=Text::Table::TinyWide
Text::TabularDisplay: participant=Text::TabularDisplay
Text::UnicodeBox::Table: participant=Text::UnicodeBox::Table
The above result presented as chart:
=begin html
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtAAAAH4CAMAAABUnipoAAAJJmlDQ1BpY2MAAEiJlZVnUJNZF8fv8zzphUASQodQQ5EqJYCUEFoo0quoQOidUEVsiLgCK4qINEWQRQEXXJUia0UUC4uCAhZ0gywCyrpxFVFBWXDfGZ33HT+8/5l7z2/+c+bec8/5cAEgiINlwct7YlK6wNvJjhkYFMwE3yiMn5...
=end html
Result formatted as table (split, part 2 of 5):
#table2#
{dataset=>"long (3x300)"}
+-------------------------------+-----------+-----------+-----------------------+-----------------------+-----------+---------+
| participant | rate (/s) | time (ms) | pct_faster_vs_slowest | pct_slower_vs_fastest | errors | samples |
+-------------------------------+-----------+-----------+-----------------------+-----------------------+-----------+---------+
| Text::UnicodeBox::Table | 7.4 | 140 | 0.00% | 35069.88% | 0.0005 | 20 |
| Text::ANSITable | 17 | 58 | 132.94% | 14998.05% | 0.00043 | 21 |
| Text::Table::More | 21 | 49 | 178.85% | 12512.60% | 0.00046 | 20 |
| Text::ASCIITable | 100 | 10 | 1223.05% | 2558.25% | 0.00022 | 22 |
| Text::FormatTable | 100 | 8 | 1644.13% | 1916.47% | 0.00026 | 21 |
| Text::Table::TinyColorWide | 100 | 7 | 1789.53% | 1761.30% | 0.00016 | 20 |
| Text::Table::TinyWide | 200 | 5 | 2638.44% | 1184.31% | 6.1e-05 | 20 |
| Text::SimpleTable | 200 | 4 | 3188.50% | 969.48% | 8.7e-05 | 20 |
| Text::Table::Manifold | 300 | 3 | 3871.99% | 785.45% | 5.4e-05 | 21 |
| Text::TabularDisplay | 350 | 2.8 | 4714.43% | 630.51% | 8.9e-06 | 20 |
| Text::Table::Tiny | 380 | 2.7 | 4992.67% | 590.60% | 5.5e-06 | 20 |
| Text::MarkdownTable | 410 | 2.5 | 5417.46% | 537.43% | 6.7e-06 | 20 |
| Text::Table | 500 | 2 | 6071.61% | 469.87% | 3.6e-05 | 20 |
| Text::Table::TinyColor | 570 | 1.8 | 7628.23% | 355.08% | 4.2e-06 | 20 |
| Text::Table::HTML | 590 | 1.7 | 7913.19% | 338.90% | 3.4e-06 | 20 |
| Text::Table::HTML::DataTables | 890 | 1.1 | 12003.16% | 190.58% | 5.1e-06 | 20 |
| Text::Table::TinyBorderStyle | 1200 | 0.83 | 16229.83% | 115.37% | 6.6e-06 | 20 |
| Text::Table::Org | 1600 | 0.62 | 21670.38% | 61.55% | 6.6e-07 | 20 |
| Text::Table::CSV | 1730 | 0.579 | 23360.70% | 49.91% | 2.3e-07 | 20 |
| Text::Table::Any | 2500 | 0.4 | 33906.20% | 3.42% | 4.3e-07 | 20 |
| Text::Table::Sprintf | 2590 | 0.386 | 35069.88% | 0.00% | 1.6e-07 | 20 |
+-------------------------------+-----------+-----------+-----------------------+-----------------------+-----------+---------+
The above result formatted in L<Benchmark.pm|Benchmark> style:
Rate Text::UnicodeBox::Table Text::ANSITable Text::Table::More Text::ASCIITable Text::FormatTable Text::Table::TinyColorWide Text::Table::TinyWide Text::SimpleTable Text::Table::Manifold Text::TabularDispl...
Text::UnicodeBox::Table 7.4/s -- -58% -65% -92% -94% -95% -96% -97% -97% -9...
Text::ANSITable 17/s 141% -- -15% -82% -86% -87% -91% -93% -94% -9...
Text::Table::More 21/s 185% 18% -- -79% -83% -85% -89% -91% -93% -9...
Text::ASCIITable 100/s 1300% 480% 390% -- -19% -30% -50% -60% -70% -7...
Text::FormatTable 100/s 1650% 625% 512% 25% -- -12% -37% -50% -62% -6...
Text::Table::TinyColorWide 100/s 1900% 728% 600% 42% 14% -- -28% -42% -57% -6...
Text::Table::TinyWide 200/s 2700% 1060% 880% 100% 60% 39% -- -19% -40% -4...
Text::SimpleTable 200/s 3400% 1350% 1125% 150% 100% 75% 25% -- -25% -3...
Text::Table::Manifold 300/s 4566% 1833% 1533% 233% 166% 133% 66% 33% -- -...
Text::TabularDisplay 350/s 4900% 1971% 1650% 257% 185% 150% 78% 42% 7% ...
Text::Table::Tiny 380/s 5085% 2048% 1714% 270% 196% 159% 85% 48% 11% ...
Text::MarkdownTable 410/s 5500% 2220% 1860% 300% 220% 179% 100% 60% 19% 1...
Text::Table 500/s 6900% 2800% 2350% 400% 300% 250% 150% 100% 50% 3...
Text::Table::TinyColor 570/s 7677% 3122% 2622% 455% 344% 288% 177% 122% 66% 5...
Text::Table::HTML 590/s 8135% 3311% 2782% 488% 370% 311% 194% 135% 76% 6...
Text::Table::HTML::DataTables 890/s 12627% 5172% 4354% 809% 627% 536% 354% 263% 172% 15...
Text::Table::TinyBorderStyle 1200/s 16767% 6887% 5803% 1104% 863% 743% 502% 381% 261% 23...
Text::Table::Org 1600/s 22480% 9254% 7803% 1512% 1190% 1029% 706% 545% 383% 35...
Text::Table::CSV 1730/s 24079% 9917% 8362% 1627% 1281% 1108% 763% 590% 418% 38...
Text::Table::Any 2500/s 34900% 14400% 12150% 2400% 1900% 1650% 1150% 900% 650% 59...
Text::Table::Sprintf 2590/s 36169% 14925% 12594% 2490% 1972% 1713% 1195% 936% 677% 62...
Legends:
Text::ANSITable: participant=Text::ANSITable
Text::ASCIITable: participant=Text::ASCIITable
Text::FormatTable: participant=Text::FormatTable
Text::MarkdownTable: participant=Text::MarkdownTable
Text::SimpleTable: participant=Text::SimpleTable
Text::Table: participant=Text::Table
Text::Table::Any: participant=Text::Table::Any
Text::Table::CSV: participant=Text::Table::CSV
Text::Table::HTML: participant=Text::Table::HTML
Text::Table::HTML::DataTables: participant=Text::Table::HTML::DataTables
Text::Table::Manifold: participant=Text::Table::Manifold
Text::Table::More: participant=Text::Table::More
Text::Table::Org: participant=Text::Table::Org
Text::Table::Sprintf: participant=Text::Table::Sprintf
Text::Table::Tiny: participant=Text::Table::Tiny
Text::Table::TinyBorderStyle: participant=Text::Table::TinyBorderStyle
Text::Table::TinyColor: participant=Text::Table::TinyColor
Text::Table::TinyColorWide: participant=Text::Table::TinyColorWide
Text::Table::TinyWide: participant=Text::Table::TinyWide
Text::TabularDisplay: participant=Text::TabularDisplay
Text::UnicodeBox::Table: participant=Text::UnicodeBox::Table
The above result presented as chart:
=begin html
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtAAAAH4CAMAAABUnipoAAAJJmlDQ1BpY2MAAEiJlZVnUJNZF8fv8zzphUASQodQQ5EqJYCUEFoo0quoQOidUEVsiLgCK4qINEWQRQEXXJUia0UUC4uCAhZ0gywCyrpxFVFBWXDfGZ33HT+8/5l7z2/+c+bec8/5cAEgiINlwct7YlK6wNvJjhkYFMwE3yiMn5...
=end html
Result formatted as table (split, part 3 of 5):
#table3#
{dataset=>"small (3x5)"}
+-------------------------------+-----------+-----------+-----------------------+-----------------------+-----------+---------+
| participant | rate (/s) | time (ms) | pct_faster_vs_slowest | pct_slower_vs_fastest | errors | samples |
+-------------------------------+-----------+-----------+-----------------------+-----------------------+-----------+---------+
| Text::UnicodeBox::Table | 200 | 6 | 0.00% | 55334.94% | 0.00017 | 20 |
| Text::ANSITable | 690 | 1.5 | 340.32% | 12489.56% | 5.2e-06 | 20 |
| Text::Table::More | 990 | 1 | 531.41% | 8679.51% | 2.9e-06 | 20 |
| Text::Table::TinyBorderStyle | 3800 | 0.26 | 2336.25% | 2175.42% | 3.8e-07 | 22 |
| Text::Table::TinyWide | 4000 | 0.3 | 2408.28% | 2110.08% | 2.7e-06 | 20 |
| Text::ASCIITable | 4700 | 0.21 | 2923.90% | 1733.22% | 6.5e-07 | 20 |
| Text::TabularDisplay | 6500 | 0.154 | 4055.56% | 1233.99% | 5.6e-08 | 24 |
| Text::FormatTable | 7070 | 0.141 | 4424.33% | 1125.26% | 1.1e-07 | 21 |
| Text::Table::Manifold | 7300 | 0.14 | 4558.22% | 1090.05% | 6.6e-07 | 20 |
| Text::Table::HTML::DataTables | 7410 | 0.135 | 4639.87% | 1069.55% | 1.2e-07 | 20 |
| Text::Table::TinyColorWide | 7600 | 0.13 | 4790.08% | 1033.62% | 1.5e-07 | 21 |
| Text::Table | 7700 | 0.13 | 4851.51% | 1019.56% | 2.1e-07 | 20 |
| Text::MarkdownTable | 12400 | 0.0805 | 7842.12% | 597.99% | 5.7e-08 | 20 |
| Text::SimpleTable | 13000 | 0.077 | 8169.66% | 570.34% | 8.8e-08 | 21 |
| Text::Table::Tiny | 14800 | 0.0676 | 9362.84% | 485.82% | 4.6e-08 | 20 |
| Text::Table::TinyColor | 22000 | 0.044 | 14278.48% | 285.54% | 1.8e-07 | 20 |
| Text::Table::HTML | 29000 | 0.034 | 18554.36% | 197.17% | 7e-08 | 20 |
| Text::Table::CSV | 45000 | 0.022 | 28952.94% | 90.81% | 2.6e-08 | 24 |
| Text::Table::Org | 51700 | 0.0193 | 32959.88% | 67.68% | 8.2e-09 | 21 |
| Text::Table::Any | 74100 | 0.0135 | 47322.43% | 16.90% | 8.8e-09 | 20 |
| Text::Table::Sprintf | 86700 | 0.0115 | 55334.94% | 0.00% | 5.7e-09 | 21 |
+-------------------------------+-----------+-----------+-----------------------+-----------------------+-----------+---------+
The above result formatted in L<Benchmark.pm|Benchmark> style:
Rate Text::UnicodeBox::Table Text::ANSITable Text::Table::More Text::Table::TinyWide Text::Table::TinyBorderStyle Text::ASCIITable Text::TabularDisplay Text::FormatTable Text::Table::Manifold Text::Table:...
Text::UnicodeBox::Table 200/s -- -75% -83% -95% -95% -96% -97% -97% -97% ...
Text::ANSITable 690/s 300% -- -33% -80% -82% -86% -89% -90% -90% ...
Text::Table::More 990/s 500% 50% -- -70% -74% -79% -84% -85% -86% ...
Text::Table::TinyWide 4000/s 1900% 400% 233% -- -13% -30% -48% -53% -53% ...
Text::Table::TinyBorderStyle 3800/s 2207% 476% 284% 15% -- -19% -40% -45% -46% ...
Text::ASCIITable 4700/s 2757% 614% 376% 42% 23% -- -26% -32% -33% ...
Text::TabularDisplay 6500/s 3796% 874% 549% 94% 68% 36% -- -8% -9% ...
Text::FormatTable 7070/s 4155% 963% 609% 112% 84% 48% 9% -- 0% ...
Text::Table::Manifold 7300/s 4185% 971% 614% 114% 85% 49% 9% 0% -- ...
Text::Table::HTML::DataTables 7410/s 4344% 1011% 640% 122% 92% 55% 14% 4% 3% ...
Text::Table::TinyColorWide 7600/s 4515% 1053% 669% 130% 100% 61% 18% 8% 7% ...
Text::Table 7700/s 4515% 1053% 669% 130% 100% 61% 18% 8% 7% ...
Text::MarkdownTable 12400/s 7353% 1763% 1142% 272% 222% 160% 91% 75% 73% ...
Text::SimpleTable 13000/s 7692% 1848% 1198% 289% 237% 172% 100% 83% 81% ...
Text::Table::Tiny 14800/s 8775% 2118% 1379% 343% 284% 210% 127% 108% 107% ...
Text::Table::TinyColor 22000/s 13536% 3309% 2172% 581% 490% 377% 250% 220% 218% ...
Text::Table::HTML 29000/s 17547% 4311% 2841% 782% 664% 517% 352% 314% 311% ...
Text::Table::CSV 45000/s 27172% 6718% 4445% 1263% 1081% 854% 600% 540% 536% ...
Text::Table::Org 51700/s 30988% 7672% 5081% 1454% 1247% 988% 697% 630% 625% ...
Text::Table::Any 74100/s 44344% 11011% 7307% 2122% 1825% 1455% 1040% 944% 937% ...
Text::Table::Sprintf 86700/s 52073% 12943% 8595% 2508% 2160% 1726% 1239% 1126% 1117% ...
Legends:
Text::ANSITable: participant=Text::ANSITable
Text::ASCIITable: participant=Text::ASCIITable
Text::FormatTable: participant=Text::FormatTable
Text::MarkdownTable: participant=Text::MarkdownTable
Text::SimpleTable: participant=Text::SimpleTable
Text::Table: participant=Text::Table
Text::Table::Any: participant=Text::Table::Any
Text::Table::CSV: participant=Text::Table::CSV
Text::Table::HTML: participant=Text::Table::HTML
Text::Table::HTML::DataTables: participant=Text::Table::HTML::DataTables
Text::Table::Manifold: participant=Text::Table::Manifold
Text::Table::More: participant=Text::Table::More
Text::Table::Org: participant=Text::Table::Org
Text::Table::Sprintf: participant=Text::Table::Sprintf
Text::Table::Tiny: participant=Text::Table::Tiny
Text::Table::TinyBorderStyle: participant=Text::Table::TinyBorderStyle
Text::Table::TinyColor: participant=Text::Table::TinyColor
Text::Table::TinyColorWide: participant=Text::Table::TinyColorWide
Text::Table::TinyWide: participant=Text::Table::TinyWide
Text::TabularDisplay: participant=Text::TabularDisplay
Text::UnicodeBox::Table: participant=Text::UnicodeBox::Table
The above result presented as chart:
=begin html
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtAAAAH4CAMAAABUnipoAAAJJmlDQ1BpY2MAAEiJlZVnUJNZF8fv8zzphUASQodQQ5EqJYCUEFoo0quoQOidUEVsiLgCK4qINEWQRQEXXJUia0UUC4uCAhZ0gywCyrpxFVFBWXDfGZ33HT+8/5l7z2/+c+bec8/5cAEgiINlwct7YlK6wNvJjhkYFMwE3yiMn5...
=end html
Result formatted as table (split, part 4 of 5):
#table4#
{dataset=>"tiny (1x1)"}
+-------------------------------+-----------+-----------+-----------------------+-----------------------+---------+---------+
| participant | rate (/s) | time (ms) | pct_faster_vs_slowest | pct_slower_vs_fastest | errors | samples |
+-------------------------------+-----------+-----------+-----------------------+-----------------------+---------+---------+
| Text::UnicodeBox::Table | 400 | 3 | 0.00% | 81511.84% | 7e-05 | 20 |
| Text::ANSITable | 2000 | 0.6 | 345.42% | 18222.60% | 1.7e-05 | 20 |
| Text::Table::More | 3100 | 0.32 | 765.49% | 9329.53% | 1.4e-06 | 20 |
| Text::Table::TinyBorderStyle | 4500 | 0.22 | 1159.08% | 6381.86% | 9.5e-07 | 20 |
| Text::Table::Manifold | 14000 | 0.074 | 3687.92% | 2054.53% | 1.5e-07 | 20 |
| Text::ASCIITable | 18000 | 0.056 | 4864.62% | 1543.87% | 9.3e-08 | 21 |
| Text::Table::HTML::DataTables | 19000 | 0.054 | 5093.75% | 1471.35% | 7.7e-08 | 21 |
| Text::Table::TinyWide | 20000 | 0.05 | 5409.22% | 1381.37% | 7.5e-07 | 20 |
| Text::Table | 21300 | 0.0469 | 5845.42% | 1272.68% | 4e-08 | 20 |
| Text::MarkdownTable | 25000 | 0.04 | 6865.20% | 1071.71% | 1.5e-07 | 20 |
| Text::TabularDisplay | 30000 | 0.03 | 9444.99% | 755.02% | 1.4e-06 | 30 |
| Text::FormatTable | 35700 | 0.028 | 9856.57% | 719.68% | 2.7e-08 | 20 |
| Text::Table::TinyColorWide | 45400 | 0.022 | 12542.38% | 545.54% | 1.2e-08 | 20 |
| Text::Table::Tiny | 52400 | 0.0191 | 14513.24% | 458.48% | 1.7e-08 | 20 |
| Text::Table::TinyColor | 50000 | 0.02 | 15110.40% | 436.55% | 9e-07 | 25 |
| Text::Table::HTML | 62200 | 0.0161 | 17223.24% | 371.11% | 5.9e-09 | 22 |
| Text::SimpleTable | 64700 | 0.0154 | 17934.63% | 352.53% | 1.3e-08 | 20 |
| Text::Table::Org | 145000 | 0.00691 | 40228.25% | 102.37% | 2e-09 | 20 |
| Text::Table::Any | 191000 | 0.00525 | 52985.72% | 53.74% | 2.6e-09 | 20 |
| Text::Table::Sprintf | 272000 | 0.00367 | 75724.38% | 7.63% | 1.7e-09 | 22 |
| Text::Table::CSV | 293000 | 0.00341 | 81511.84% | 0.00% | 2.1e-09 | 21 |
+-------------------------------+-----------+-----------+-----------------------+-----------------------+---------+---------+
The above result formatted in L<Benchmark.pm|Benchmark> style:
Rate Text::UnicodeBox::Table Text::ANSITable Text::Table::More Text::Table::TinyBorderStyle Text::Table::Manifold Text::ASCIITable Text::Table::HTML::DataTables Text::Table::TinyWide Text::Table Text::Ma...
Text::UnicodeBox::Table 400/s -- -80% -89% -92% -97% -98% -98% -98% -98% ...
Text::ANSITable 2000/s 400% -- -46% -63% -87% -90% -91% -91% -92% ...
Text::Table::More 3100/s 837% 87% -- -31% -76% -82% -83% -84% -85% ...
Text::Table::TinyBorderStyle 4500/s 1263% 172% 45% -- -66% -74% -75% -77% -78% ...
Text::Table::Manifold 14000/s 3954% 710% 332% 197% -- -24% -27% -32% -36% ...
Text::ASCIITable 18000/s 5257% 971% 471% 292% 32% -- -3% -10% -16% ...
Text::Table::HTML::DataTables 19000/s 5455% 1011% 492% 307% 37% 3% -- -7% -13% ...
Text::Table::TinyWide 20000/s 5900% 1099% 540% 339% 47% 11% 7% -- -6% ...
Text::Table 21300/s 6296% 1179% 582% 369% 57% 19% 15% 6% -- ...
Text::MarkdownTable 25000/s 7400% 1400% 700% 450% 84% 39% 34% 25% 17% ...
Text::TabularDisplay 30000/s 9900% 1900% 966% 633% 146% 86% 80% 66% 56% ...
Text::FormatTable 35700/s 10614% 2042% 1042% 685% 164% 100% 92% 78% 67% ...
Text::Table::TinyColorWide 45400/s 13536% 2627% 1354% 900% 236% 154% 145% 127% 113% ...
Text::Table::TinyColor 50000/s 14900% 2900% 1500% 1000% 270% 179% 169% 150% 134% ...
Text::Table::Tiny 52400/s 15606% 3041% 1575% 1051% 287% 193% 182% 161% 145% ...
Text::Table::HTML 62200/s 18533% 3626% 1887% 1266% 359% 247% 235% 210% 191% ...
Text::SimpleTable 64700/s 19380% 3796% 1977% 1328% 380% 263% 250% 224% 204% ...
Text::Table::Org 145000/s 43315% 8583% 4530% 3083% 970% 710% 681% 623% 578% ...
Text::Table::Any 191000/s 57042% 11328% 5995% 4090% 1309% 966% 928% 852% 793% ...
Text::Table::Sprintf 272000/s 81643% 16248% 8619% 5894% 1916% 1425% 1371% 1262% 1177% ...
Text::Table::CSV 293000/s 87876% 17495% 9284% 6351% 2070% 1542% 1483% 1366% 1275% ...
Legends:
Text::ANSITable: participant=Text::ANSITable
Text::ASCIITable: participant=Text::ASCIITable
Text::FormatTable: participant=Text::FormatTable
Text::MarkdownTable: participant=Text::MarkdownTable
Text::SimpleTable: participant=Text::SimpleTable
Text::Table: participant=Text::Table
Text::Table::Any: participant=Text::Table::Any
Text::Table::CSV: participant=Text::Table::CSV
Text::Table::HTML: participant=Text::Table::HTML
Text::Table::HTML::DataTables: participant=Text::Table::HTML::DataTables
Text::Table::Manifold: participant=Text::Table::Manifold
Text::Table::More: participant=Text::Table::More
Text::Table::Org: participant=Text::Table::Org
Text::Table::Sprintf: participant=Text::Table::Sprintf
Text::Table::Tiny: participant=Text::Table::Tiny
Text::Table::TinyBorderStyle: participant=Text::Table::TinyBorderStyle
Text::Table::TinyColor: participant=Text::Table::TinyColor
Text::Table::TinyColorWide: participant=Text::Table::TinyColorWide
Text::Table::TinyWide: participant=Text::Table::TinyWide
Text::TabularDisplay: participant=Text::TabularDisplay
Text::UnicodeBox::Table: participant=Text::UnicodeBox::Table
The above result presented as chart:
=begin html
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtAAAAH4CAMAAABUnipoAAAJJmlDQ1BpY2MAAEiJlZVnUJNZF8fv8zzphUASQodQQ5EqJYCUEFoo0quoQOidUEVsiLgCK4qINEWQRQEXXJUia0UUC4uCAhZ0gywCyrpxFVFBWXDfGZ33HT+8/5l7z2/+c+bec8/5cAEgiINlwct7YlK6wNvJjhkYFMwE3yiMn5...
=end html
Result formatted as table (split, part 5 of 5):
#table5#
{dataset=>"wide (30x5)"}
+-------------------------------+-----------+-----------+-----------------------+-----------------------+-----------+---------+
| participant | rate (/s) | time (ms) | pct_faster_vs_slowest | pct_slower_vs_fastest | errors | samples |
+-------------------------------+-----------+-----------+-----------------------+-----------------------+-----------+---------+
| Text::UnicodeBox::Table | 33 | 30 | 0.00% | 40107.73% | 0.00028 | 20 |
| Text::ANSITable | 70 | 10 | 112.30% | 18838.85% | 0.00034 | 20 |
| Text::Table::More | 100 | 9 | 242.25% | 11648.22% | 0.00016 | 20 |
| Text::ASCIITable | 450 | 2.2 | 1269.60% | 2835.73% | 1.8e-05 | 21 |
| Text::FormatTable | 650 | 1.5 | 1867.35% | 1943.75% | 1.2e-05 | 20 |
| Text::Table::TinyColorWide | 830 | 1.2 | 2401.71% | 1507.21% | 3.5e-06 | 20 |
| Text::Table::TinyBorderStyle | 900 | 1 | 2611.90% | 1382.64% | 1.7e-05 | 20 |
| Text::Table | 1200 | 0.87 | 3377.43% | 1056.25% | 1.5e-06 | 20 |
| Text::Table::Tiny | 1000 | 0.8 | 3482.31% | 1022.40% | 3.8e-05 | 29 |
| Text::Table::TinyWide | 1200 | 0.83 | 3524.20% | 1009.42% | 1e-06 | 20 |
| Text::SimpleTable | 1580 | 0.633 | 4667.39% | 743.39% | 5.8e-07 | 21 |
| Text::Table::Manifold | 1700 | 0.6 | 4936.57% | 698.32% | 7.9e-07 | 20 |
| Text::TabularDisplay | 2300 | 0.44 | 6812.25% | 481.69% | 7.1e-07 | 20 |
| Text::Table::TinyColor | 2900 | 0.35 | 8603.40% | 361.98% | 5e-07 | 20 |
| Text::Table::HTML | 3370 | 0.297 | 10075.60% | 295.14% | 1.7e-07 | 20 |
| Text::MarkdownTable | 3400 | 0.3 | 10085.88% | 294.74% | 3.2e-07 | 20 |
| Text::Table::HTML::DataTables | 4100 | 0.24 | 12334.13% | 223.37% | 7.8e-07 | 20 |
| Text::Table::Sprintf | 5260 | 0.19 | 15772.29% | 153.32% | 5.1e-08 | 21 |
| Text::Table::Org | 7800 | 0.13 | 23583.00% | 69.77% | 2.8e-07 | 20 |
| Text::Table::CSV | 11000 | 0.088 | 34210.03% | 17.19% | 1.6e-07 | 20 |
| Text::Table::Any | 13300 | 0.0751 | 40107.73% | 0.00% | 4.5e-08 | 20 |
+-------------------------------+-----------+-----------+-----------------------+-----------------------+-----------+---------+
The above result formatted in L<Benchmark.pm|Benchmark> style:
Rate Text::UnicodeBox::Table Text::ANSITable Text::Table::More Text::ASCIITable Text::FormatTable Text::Table::TinyColorWide Text::Table::TinyBorderStyle Text::Table Text::Table::TinyWide Text::Table::Tin...
Text::UnicodeBox::Table 33/s -- -66% -70% -92% -95% -96% -96% -97% -97% -97...
Text::ANSITable 70/s 200% -- -9% -78% -85% -88% -90% -91% -91% -92...
Text::Table::More 100/s 233% 11% -- -75% -83% -86% -88% -90% -90% -91...
Text::ASCIITable 450/s 1263% 354% 309% -- -31% -45% -54% -60% -62% -63...
Text::FormatTable 650/s 1900% 566% 500% 46% -- -20% -33% -42% -44% -46...
Text::Table::TinyColorWide 830/s 2400% 733% 650% 83% 25% -- -16% -27% -30% -33...
Text::Table::TinyBorderStyle 900/s 2900% 900% 800% 120% 50% 19% -- -13% -17% -19...
Text::Table 1200/s 3348% 1049% 934% 152% 72% 37% 14% -- -4% -8...
Text::Table::TinyWide 1200/s 3514% 1104% 984% 165% 80% 44% 20% 4% -- -3...
Text::Table::Tiny 1000/s 3650% 1150% 1025% 175% 87% 49% 25% 8% 3% -...
Text::SimpleTable 1580/s 4639% 1479% 1321% 247% 136% 89% 57% 37% 31% 26...
Text::Table::Manifold 1700/s 4900% 1566% 1400% 266% 150% 100% 66% 44% 38% 33...
Text::TabularDisplay 2300/s 6718% 2172% 1945% 400% 240% 172% 127% 97% 88% 81...
Text::Table::TinyColor 2900/s 8471% 2757% 2471% 528% 328% 242% 185% 148% 137% 128...
Text::MarkdownTable 3400/s 9900% 3233% 2900% 633% 400% 300% 233% 190% 176% 166...
Text::Table::HTML 3370/s 10001% 3267% 2930% 640% 405% 304% 236% 192% 179% 169...
Text::Table::HTML::DataTables 4100/s 12400% 4066% 3650% 816% 525% 400% 316% 262% 245% 233...
Text::Table::Sprintf 5260/s 15689% 5163% 4636% 1057% 689% 531% 426% 357% 336% 321...
Text::Table::Org 7800/s 22976% 7592% 6823% 1592% 1053% 823% 669% 569% 538% 515...
Text::Table::CSV 11000/s 33990% 11263% 10127% 2400% 1604% 1263% 1036% 888% 843% 809...
Text::Table::Any 13300/s 39846% 13215% 11884% 2829% 1897% 1497% 1231% 1058% 1005% 965...
Legends:
Text::ANSITable: participant=Text::ANSITable
Text::ASCIITable: participant=Text::ASCIITable
Text::FormatTable: participant=Text::FormatTable
Text::MarkdownTable: participant=Text::MarkdownTable
Text::SimpleTable: participant=Text::SimpleTable
Text::Table: participant=Text::Table
Text::Table::Any: participant=Text::Table::Any
Text::Table::CSV: participant=Text::Table::CSV
Text::Table::HTML: participant=Text::Table::HTML
Text::Table::HTML::DataTables: participant=Text::Table::HTML::DataTables
Text::Table::Manifold: participant=Text::Table::Manifold
Text::Table::More: participant=Text::Table::More
Text::Table::Org: participant=Text::Table::Org
Text::Table::Sprintf: participant=Text::Table::Sprintf
Text::Table::Tiny: participant=Text::Table::Tiny
Text::Table::TinyBorderStyle: participant=Text::Table::TinyBorderStyle
Text::Table::TinyColor: participant=Text::Table::TinyColor
Text::Table::TinyColorWide: participant=Text::Table::TinyColorWide
Text::Table::TinyWide: participant=Text::Table::TinyWide
Text::TabularDisplay: participant=Text::TabularDisplay
Text::UnicodeBox::Table: participant=Text::UnicodeBox::Table
The above result presented as chart:
=begin html
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtAAAAH4CAMAAABUnipoAAAJJmlDQ1BpY2MAAEiJlZVnUJNZF8fv8zzphUASQodQQ5EqJYCUEFoo0quoQOidUEVsiLgCK4qINEWQRQEXXJUia0UUC4uCAhZ0gywCyrpxFVFBWXDfGZ33HT+8/5l7z2/+c+bec8/5cAEgiINlwct7YlK6wNvJjhkYFMwE3yiMn5...
=end html
=head2 Sample benchmark #2
Benchmark command (benchmarking module startup overhead):
% bencher --cpanmodules-module TextTable --module-startup
Result formatted as table:
#table6#
+-------------------------------+-----------+----------------------+-----------------------+-----------------------+-----------+---------+
| participant | time (ms) | mod_overhead_time | pct_faster_vs_slowest | pct_slower_vs_fastest | errors | samples |
+-------------------------------+-----------+----------------------+-----------------------+-----------------------+-----------+---------+
| Text::UnicodeBox::Table | 190 | 181 | 0.00% | 2053.49% | 0.00061 | 20 |
| Text::Table::Manifold | 110 | 101 | 75.66% | 1125.93% | 0.00039 | 20 |
| Text::ANSITable | 48 | 39 | 286.81% | 456.73% | 0.00026 | 20 |
| Text::MarkdownTable | 46 | 37 | 301.84% | 435.91% | 0.00031 | 21 |
| Text::Table::TinyColorWide | 40 | 31 | 366.96% | 361.18% | 0.00029 | 20 |
| Text::Table::TinyWide | 36 | 27 | 413.28% | 319.56% | 0.00014 | 22 |
| Text::Table::More | 28 | 19 | 553.94% | 229.31% | 0.00019 | 20 |
| Text::Table | 28 | 19 | 568.31% | 222.23% | 0.00027 | 20 |
| Text::ASCIITable | 20 | 11 | 781.19% | 144.38% | 0.00028 | 20 |
| Text::Table::Tiny | 21 | 12 | 795.31% | 140.53% | 0.00017 | 20 |
| Text::Table::TinyColor | 20 | 11 | 951.17% | 104.87% | 0.00042 | 21 |
| Text::FormatTable | 17 | 8 | 988.23% | 97.89% | 0.00017 | 20 |
| Text::Table::Any | 10 | 1 | 1195.57% | 66.22% | 0.00021 | 20 |
| Text::Table::TinyBorderStyle | 10 | 1 | 1201.51% | 65.46% | 0.00019 | 21 |
| Text::TabularDisplay | 10 | 1 | 1342.19% | 49.32% | 0.0002 | 20 |
| Text::Table::Org | 10 | 1 | 1396.46% | 43.91% | 0.0002 | 20 |
| Text::Table::HTML | 10 | 1 | 1400.52% | 43.52% | 0.00019 | 20 |
| Text::SimpleTable | 12 | 3 | 1421.63% | 41.53% | 0.00011 | 20 |
| Text::Table::HTML::DataTables | 10 | 1 | 1463.78% | 37.71% | 0.00012 | 20 |
| Text::Table::Sprintf | 9.1 | 0.0999999999999996 | 1954.13% | 4.84% | 7.3e-05 | 20 |
| Text::Table::CSV | 8.7 | -0.300000000000001 | 2029.97% | 1.10% | 3.8e-05 | 20 |
| perl -e1 (baseline) | 9 | 0 | 2053.49% | 0.00% | 8.9e-05 | 20 |
+-------------------------------+-----------+----------------------+-----------------------+-----------------------+-----------+---------+
The above result formatted in L<Benchmark.pm|Benchmark> style:
Rate Text::UnicodeBox::Table Text::Table::Manifold Text::ANSITable Text::MarkdownTable Text::Table::TinyColorWide Text::Table::TinyWide Text::Table::More Text::Table Text::Table::Tiny Text::ASCIITable Te...
Text::UnicodeBox::Table 5.3/s -- -42% -74% -75% -78% -81% -85% -85% -88% -89% ...
Text::Table::Manifold 9.1/s 72% -- -56% -58% -63% -67% -74% -74% -80% -81% ...
Text::ANSITable 20.8/s 295% 129% -- -4% -16% -25% -41% -41% -56% -58% ...
Text::MarkdownTable 21.7/s 313% 139% 4% -- -13% -21% -39% -39% -54% -56% ...
Text::Table::TinyColorWide 25.0/s 375% 175% 19% 14% -- -9% -30% -30% -47% -50% ...
Text::Table::TinyWide 27.8/s 427% 205% 33% 27% 11% -- -22% -22% -41% -44% ...
Text::Table::More 35.7/s 578% 292% 71% 64% 42% 28% -- 0% -25% -28% ...
Text::Table 35.7/s 578% 292% 71% 64% 42% 28% 0% -- -25% -28% ...
Text::Table::Tiny 47.6/s 804% 423% 128% 119% 90% 71% 33% 33% -- -4% ...
Text::ASCIITable 50.0/s 850% 450% 140% 129% 100% 80% 39% 39% 5% -- ...
Text::Table::TinyColor 50.0/s 850% 450% 140% 129% 100% 80% 39% 39% 5% 0% ...
Text::FormatTable 58.8/s 1017% 547% 182% 170% 135% 111% 64% 64% 23% 17% ...
Text::SimpleTable 83.3/s 1483% 816% 300% 283% 233% 200% 133% 133% 75% 66% ...
Text::Table::Any 100.0/s 1800% 1000% 380% 359% 300% 260% 179% 179% 110% 100% ...
Text::Table::TinyBorderStyle 100.0/s 1800% 1000% 380% 359% 300% 260% 179% 179% 110% 100% ...
Text::TabularDisplay 100.0/s 1800% 1000% 380% 359% 300% 260% 179% 179% 110% 100% ...
Text::Table::Org 100.0/s 1800% 1000% 380% 359% 300% 260% 179% 179% 110% 100% ...
Text::Table::HTML 100.0/s 1800% 1000% 380% 359% 300% 260% 179% 179% 110% 100% ...
Text::Table::HTML::DataTables 100.0/s 1800% 1000% 380% 359% 300% 260% 179% 179% 110% 100% ...
Text::Table::Sprintf 109.9/s 1987% 1108% 427% 405% 339% 295% 207% 207% 130% 119% ...
perl -e1 (baseline) 111.1/s 2011% 1122% 433% 411% 344% 300% 211% 211% 133% 122% ...
Text::Table::CSV 114.9/s 2083% 1164% 451% 428% 359% 313% 221% 221% 141% 129% ...
Legends:
Text::ANSITable: mod_overhead_time=39 participant=Text::ANSITable
Text::ASCIITable: mod_overhead_time=11 participant=Text::ASCIITable
Text::FormatTable: mod_overhead_time=8 participant=Text::FormatTable
Text::MarkdownTable: mod_overhead_time=37 participant=Text::MarkdownTable
Text::SimpleTable: mod_overhead_time=3 participant=Text::SimpleTable
Text::Table: mod_overhead_time=19 participant=Text::Table
Text::Table::Any: mod_overhead_time=1 participant=Text::Table::Any
( run in 1.396 second using v1.01-cache-2.11-cpan-39bf76dae61 )