Acme::CPANModules::TextTable - Modules that generate text tables
This document describes version 0.013 of Acme::CPANModules::TextTable (from Perl distribution Acme-CPANModules-TextTable), released on 2021-07-31.
To run benchmark with default option:
% bencher --cpanmodules-module TextTable
To run module startup overhead benchmark:
% bencher --module-startup --cpanmodules-module TextTable
For more options (dump scenario, list/include/exclude/add participants, list/include/exclude/add datasets, etc), see bencher or run bencher --help.
bencher --help
Author: PERLANCAR
This is a frontend for many text table modules as backends. The interface is dead simple, following Text::Table::Tiny. The main drawback is that it currently does not allow passing (some, any) options to each backend.
Author: EWATERS
The main feature of this module is the various border style it provides drawn using Unicode box-drawing characters. It allows per-row style. The rendering speed is particularly slow compared to other modules.
Author: RSAVAGE
Two main features of this module is per-column aligning and wide character support. This module, aside from doing its rendering, can also be told to pass rendering to HTML, CSV, or other text table module like Text::UnicodeBox::Table); so in this way it is similar to Text::Table::Any.
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: Text::Table::Span (later renamed to 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.
Author: LUNATIC
Author: TREY
Author: VOJ
Author: SHLOMIF
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!).
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 Text::ANSITable, although currently it does not offer nearly as many formatting options as Text::ANSITable.
A performant (see benchmark result) and lightweight (a page of code, no use of modules at all), but with minimal extra features.
Author: DARREN
+-------------------------------+----------------+------------------+---------------+--------------+----------------+-----------------+-------------+-------------------+------------------+---------------------+--------------+------------+------------------+--------------------+-----------------+----------------+-------------------+----------+-----------------------+---------------------+-----------------+-----------+ | 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_cell *13) | valign_column *14) | valign_row *15) | wide_char_data | column_width *16) | pad *17) | per_column_width *18) | per_row_height *19) | row_height *20) | vpad *21) | +-------------------------------+----------------+------------------+---------------+--------------+----------------+-----------------+-------------+-------------------+------------------+---------------------+--------------+------------+------------------+--------------------+-----------------+----------------+-------------------+----------+-----------------------+---------------------+-----------------+-----------+ | 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) | N/A *22) | N/A *22) | N/A *22) | N/A | N/A | N/A | N/A | N/A | N/A | | Text::UnicodeBox::Table | no | yes | N/A | no | yes | no | no | yes | no | no | no | slow | N/A | N/A | N/A | yes | N/A | N/A | N/A | N/A | N/A | N/A | | Text::Table::Manifold | no | yes | N/A | N/A | yes | no | no | no *23) | no | no | no | N/A | N/A | N/A | N/A | yes | N/A | N/A | N/A | N/A | N/A | N/A | | Text::ANSITable | yes | yes | yes | yes | yes | yes | no | yes | yes | yes | no | slow | yes | yes | yes | yes | yes | yes | yes | yes | yes | 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 | N/A | N/A | no | N/A | N/A | N/A | 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 | N/A | N/A | no | N/A | N/A | N/A | 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 *24) | N/A | N/A | N/A | N/A | N/A | no | N/A | N/A | N/A | N/A | N/A | N/A | | Text::Table | N/A | N/A | N/A | N/A *25) | no | N/A | N/A | N/A | N/A | yes | N/A | N/A | N/A | N/A | N/A | no | N/A | N/A | N/A | 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 | N/A | N/A | yes | N/A | N/A | N/A | N/A | N/A | N/A | | Text::Table::TinyBorderStyle | N/A | N/A | N/A | yes | no | N/A | N/A | N/A | N/A | no | N/A | N/A | N/A | N/A | N/A | no | N/A | N/A | N/A | N/A | N/A | N/A | | Text::Table::More | yes | yes | yes | yes | yes | no | yes | yes | no | yes | yes | slow | yes | yes | yes | yes | no | no | no | no | no | no | | Text::Table::Sprintf | N/A | N/A | N/A | no | no | N/A | N/A | N/A | N/A | no | N/A | fast | N/A | N/A | N/A | no | N/A | N/A | N/A | N/A | N/A | N/A | | Text::Table::TinyColor | N/A | N/A | N/A | no | yes | N/A | N/A | N/A | N/A | no | N/A | N/A | N/A | N/A | N/A | no | N/A | N/A | N/A | N/A | N/A | N/A | | Text::Table::TinyColorWide | N/A | N/A | N/A | no | yes | N/A | N/A | N/A | N/A | no | N/A | N/A | N/A | N/A | N/A | yes | N/A | N/A | N/A | N/A | N/A | N/A | | Text::Table::TinyWide | N/A | N/A | N/A | no | no | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | yes | N/A | N/A | N/A | N/A | N/A | N/A | | Text::Table::Org | N/A | N/A | N/A | no | no | N/A | N/A | N/A | N/A | no | N/A | N/A | N/A | N/A | N/A | no | N/A | N/A | N/A | N/A | N/A | N/A | | Text::Table::CSV | N/A | N/A | N/A | N/A *26) | no | N/A | N/A | N/A | N/A | yes *27) | N/A | N/A | N/A | N/A | N/A | yes | N/A | N/A | N/A | N/A | N/A | N/A | | Text::Table::HTML | N/A | N/A | N/A | no | no *28) | N/A | N/A | N/A | N/A | yes | N/A | N/A | N/A | N/A | N/A | yes | N/A | N/A | N/A | N/A | N/A | N/A | | Text::Table::HTML::DataTables | N/A | N/A | N/A | no | no *28) | N/A | N/A | N/A | N/A | yes | N/A | N/A | N/A | N/A | N/A | yes | N/A | N/A | N/A | N/A | N/A | N/A | | Text::TabularDisplay | N/A | N/A | N/A | N/A *26) | no | N/A | N/A | N/A | N/A | yes | N/A | N/A | N/A | N/A | N/A | yes | N/A | N/A | N/A | N/A | N/A | N/A | +-------------------------------+----------------+------------------+---------------+--------------+----------------+-----------------+-------------+-------------------+------------------+---------------------+--------------+------------+------------------+--------------------+-----------------+----------------+-------------------+----------+-----------------------+---------------------+-----------------+-----------+
Notes:
Version numbers shown below are the versions used when running the sample benchmark.
Text::Table::Any 0.104
Text::UnicodeBox::Table
Text::Table::Manifold 1.03
Text::ANSITable 0.602
Text::ASCIITable 0.22
Text::FormatTable 1.03
Text::MarkdownTable 0.3.1
Text::Table 1.134
Text::Table::Tiny 1.02
Text::Table::TinyBorderStyle 0.004
Text::Table::More 0.014
Text::Table::Sprintf 0.003
Text::Table::TinyColor 0.002
Text::Table::TinyColorWide 0.001
Text::Table::TinyWide 0.001
Text::Table::Org 0.02
Text::Table::CSV 0.023
Text::Table::HTML 0.004
Text::Table::HTML::DataTables 0.007
Text::TabularDisplay 1.38
Text::Table::Any (perl_code)
Text::Table::Any
Text::UnicodeBox::Table (perl_code)
Text::Table::Manifold (perl_code)
Text::Table::Manifold
Text::ANSITable (perl_code)
Text::ANSITable
Text::ASCIITable (perl_code)
Text::ASCIITable
Text::FormatTable (perl_code)
Text::FormatTable
Text::MarkdownTable (perl_code)
Text::MarkdownTable
Text::Table (perl_code)
Text::Table
Text::Table::Tiny (perl_code)
Text::Table::Tiny
Text::Table::TinyBorderStyle (perl_code)
Text::Table::TinyBorderStyle
Text::Table::More (perl_code)
Text::Table::More
Text::Table::Sprintf (perl_code)
Text::Table::Sprintf
Text::Table::TinyColor (perl_code)
Text::Table::TinyColor
Text::Table::TinyColorWide (perl_code)
Text::Table::TinyColorWide
Text::Table::TinyWide (perl_code)
Text::Table::TinyWide
Text::Table::Org (perl_code)
Text::Table::Org
Text::Table::CSV (perl_code)
Text::Table::CSV
Text::Table::HTML (perl_code)
Text::Table::HTML
Text::Table::HTML::DataTables (perl_code)
Text::Table::HTML::DataTables
Text::TabularDisplay (perl_code)
Text::TabularDisplay
tiny (1x1)
small (3x5)
wide (30x5)
long (3x300)
large (30x300)
multiline data (2x1) (not included by default)
wide char data (1x2) (not included by default)
color data (1x2) (not included by default)
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):
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 | 1.44 | 696 | 0.00% | 38063.55% | 0.00046 | 20 | | Text::ANSITable | 3.28 | 305 | 128.30% | 16616.21% | 0.0002 | 20 | | Text::Table::More | 6.66 | 150 | 363.51% | 8133.67% | 0.00014 | 20 | | Text::ASCIITable | 15 | 66 | 947.67% | 3542.72% | 7.8e-05 | 20 | | Text::Table::TinyColorWide | 22.1 | 45.2 | 1439.32% | 2379.25% | 2e-05 | 20 | | Text::FormatTable | 22.8 | 43.9 | 1483.83% | 2309.58% | 3.2e-05 | 20 | | Text::Table::TinyWide | 31.2 | 32 | 2072.28% | 1656.84% | 1.1e-05 | 20 | | Text::Table::Manifold | 49 | 20 | 3318.43% | 1016.41% | 2.4e-05 | 20 | | Text::Table::Tiny | 53 | 19 | 3583.64% | 936.03% | 3.4e-05 | 20 | | Text::TabularDisplay | 58.7 | 17 | 3985.42% | 834.14% | 5.6e-06 | 20 | | Text::Table::TinyColor | 78.8 | 12.7 | 5379.60% | 596.47% | 1.2e-05 | 20 | | Text::Table::HTML | 79 | 13 | 5390.03% | 595.14% | 2.7e-05 | 20 | | Text::MarkdownTable | 114 | 8.76 | 7844.02% | 380.41% | 4.7e-06 | 20 | | Text::Table | 140 | 7 | 9907.76% | 281.34% | 9.6e-06 | 20 | | Text::Table::HTML::DataTables | 165 | 6.05 | 11398.27% | 231.91% | 3.4e-06 | 20 | | Text::Table::CSV | 283 | 3.54 | 19572.73% | 93.99% | 2e-06 | 20 | | Text::Table::Org | 299 | 3.34 | 20702.20% | 83.46% | 9.1e-07 | 20 | | Text::Table::TinyBorderStyle | 331 | 3.02 | 22934.08% | 65.68% | 1.5e-06 | 20 | | Text::Table::Any | 520 | 1.9 | 35751.62% | 6.45% | 5.2e-06 | 20 | | Text::Table::Sprintf | 548 | 1.82 | 38063.55% | 0.00% | 1.6e-06 | 23 | +-------------------------------+-----------+-----------+-----------------------+-----------------------+-----------+---------+
The above result formatted in Benchmark.pm style:
Rate Text::UnicodeBox::Table Text::ANSITable Text::Table::More Text::ASCIITable Text::Table::TinyColorWide Text::FormatTable Text::Table::TinyWide Text::Table::Manifold Text::Table::Tiny Text::TabularDisplay Text::Table::HTML Text::Table::TinyColor Text::MarkdownTable Text::Table Text::Table::HTML::DataTables Text::Table::CSV Text::Table::Org Text::Table::TinyBorderStyle Text::Table::Any Text::Table::Sprintf Text::UnicodeBox::Table 1.44/s -- -56% -78% -90% -93% -93% -95% -97% -97% -97% -98% -98% -98% -98% -99% -99% -99% -99% -99% -99% Text::ANSITable 3.28/s 128% -- -50% -78% -85% -85% -89% -93% -93% -94% -95% -95% -97% -97% -98% -98% -98% -99% -99% -99% Text::Table::More 6.66/s 363% 103% -- -56% -69% -70% -78% -86% -87% -88% -91% -91% -94% -95% -95% -97% -97% -97% -98% -98% Text::ASCIITable 15/s 954% 362% 127% -- -31% -33% -51% -69% -71% -74% -80% -80% -86% -89% -90% -94% -94% -95% -97% -97% Text::Table::TinyColorWide 22.1/s 1439% 574% 231% 46% -- -2% -29% -55% -57% -62% -71% -71% -80% -84% -86% -92% -92% -93% -95% -95% Text::FormatTable 22.8/s 1485% 594% 241% 50% 2% -- -27% -54% -56% -61% -70% -71% -80% -84% -86% -91% -92% -93% -95% -95% Text::Table::TinyWide 31.2/s 2075% 853% 368% 106% 41% 37% -- -37% -40% -46% -59% -60% -72% -78% -81% -88% -89% -90% -94% -94% Text::Table::Manifold 49/s 3379% 1425% 650% 229% 126% 119% 60% -- -5% -15% -35% -36% -56% -65% -69% -82% -83% -84% -90% -90% Text::Table::Tiny 53/s 3563% 1505% 689% 247% 137% 131% 68% 5% -- -10% -31% -33% -53% -63% -68% -81% -82% -84% -90% -90% Text::TabularDisplay 58.7/s 3994% 1694% 782% 288% 165% 158% 88% 17% 11% -- -23% -25% -48% -58% -64% -79% -80% -82% -88% -89% Text::Table::HTML 79/s 5253% 2246% 1053% 407% 247% 237% 146% 53% 46% 30% -- -2% -32% -46% -53% -72% -74% -76% -85% -86% Text::Table::TinyColor 78.8/s 5380% 2301% 1081% 419% 255% 245% 151% 57% 49% 33% 2% -- -31% -44% -52% -72% -73% -76% -85% -85% Text::MarkdownTable 114/s 7845% 3381% 1612% 653% 415% 401% 265% 128% 116% 94% 48% 44% -- -20% -30% -59% -61% -65% -78% -79% Text::Table 140/s 9842% 4257% 2042% 842% 545% 527% 357% 185% 171% 142% 85% 81% 25% -- -13% -49% -52% -56% -72% -74% Text::Table::HTML::DataTables 165/s 11404% 4941% 2379% 990% 647% 625% 428% 230% 214% 180% 114% 109% 44% 15% -- -41% -44% -50% -68% -69% Text::Table::CSV 283/s 19561% 8515% 4137% 1764% 1176% 1140% 803% 464% 436% 380% 267% 258% 147% 97% 70% -- -5% -14% -46% -48% Text::Table::Org 299/s 20738% 9031% 4391% 1876% 1253% 1214% 858% 498% 468% 408% 289% 280% 162% 109% 81% 5% -- -9% -43% -45% Text::Table::TinyBorderStyle 331/s 22946% 9999% 4866% 2085% 1396% 1353% 959% 562% 529% 462% 330% 320% 190% 131% 100% 17% 10% -- -37% -39% Text::Table::Any 520/s 36531% 15952% 7794% 3373% 2278% 2210% 1584% 952% 900% 794% 584% 568% 361% 268% 218% 86% 75% 58% -- -4% Text::Table::Sprintf 548/s 38141% 16658% 8141% 3526% 2383% 2312% 1658% 998% 943% 834% 614% 597% 381% 284% 232% 94% 83% 65% 4% -- Legends: Text::ANSITable: participant=Text::ANSITable Text::ASCIITable: participant=Text::ASCIITable Text::FormatTable: participant=Text::FormatTable Text::MarkdownTable: participant=Text::MarkdownTable 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:
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 | 11.3 | 88.4 | 0.00% | 34905.68% | 8.5e-05 | 21 | | Text::ANSITable | 30 | 33 | 164.51% | 13134.31% | 4e-05 | 20 | | Text::Table::More | 61.7 | 16.2 | 445.13% | 6321.58% | 1.6e-05 | 20 | | Text::ASCIITable | 162 | 6.17 | 1331.88% | 2344.74% | 3.4e-06 | 20 | | Text::FormatTable | 200 | 5 | 1671.23% | 1876.35% | 7.1e-06 | 20 | | Text::Table::TinyColorWide | 217 | 4.61 | 1817.34% | 1725.74% | 2.4e-06 | 21 | | Text::Table::TinyWide | 304 | 3.29 | 2587.30% | 1202.63% | 1.3e-06 | 20 | | Text::TabularDisplay | 431 | 2.32 | 3708.00% | 819.27% | 2.2e-06 | 20 | | Text::Table::Manifold | 439 | 2.28 | 3780.76% | 802.03% | 1.1e-06 | 20 | | Text::Table::Tiny | 477 | 2.1 | 4112.27% | 731.04% | 1.3e-06 | 22 | | Text::MarkdownTable | 540 | 1.85 | 4671.83% | 633.59% | 1.1e-06 | 20 | | Text::Table | 646 | 1.55 | 5605.53% | 513.54% | 7.5e-07 | 20 | | Text::Table::TinyColor | 735 | 1.36 | 6390.04% | 439.38% | 4.8e-07 | 20 | | Text::Table::HTML | 743 | 1.35 | 6463.79% | 433.32% | 1.1e-06 | 21 | | Text::Table::HTML::DataTables | 1300 | 0.79 | 11078.51% | 213.15% | 8.3e-07 | 21 | | Text::Table::Org | 2170 | 0.461 | 19065.87% | 82.65% | 2.1e-07 | 20 | | Text::Table::CSV | 2170 | 0.46 | 19094.61% | 82.37% | 2.1e-07 | 21 | | Text::Table::TinyBorderStyle | 2210 | 0.452 | 19451.10% | 79.05% | 2.1e-07 | 20 | | Text::Table::Any | 3810 | 0.262 | 33567.68% | 3.97% | 1.9e-07 | 26 | | Text::Table::Sprintf | 3960 | 0.252 | 34905.68% | 0.00% | 2.1e-07 | 20 | +-------------------------------+-----------+-----------+-----------------------+-----------------------+---------+---------+
Rate Text::UnicodeBox::Table Text::ANSITable Text::Table::More Text::ASCIITable Text::FormatTable Text::Table::TinyColorWide Text::Table::TinyWide Text::TabularDisplay Text::Table::Manifold Text::Table::Tiny Text::MarkdownTable Text::Table Text::Table::TinyColor Text::Table::HTML Text::Table::HTML::DataTables Text::Table::Org Text::Table::CSV Text::Table::TinyBorderStyle Text::Table::Any Text::Table::Sprintf Text::UnicodeBox::Table 11.3/s -- -62% -81% -93% -94% -94% -96% -97% -97% -97% -97% -98% -98% -98% -99% -99% -99% -99% -99% -99% Text::ANSITable 30/s 167% -- -50% -81% -84% -86% -90% -92% -93% -93% -94% -95% -95% -95% -97% -98% -98% -98% -99% -99% Text::Table::More 61.7/s 445% 103% -- -61% -69% -71% -79% -85% -85% -87% -88% -90% -91% -91% -95% -97% -97% -97% -98% -98% Text::ASCIITable 162/s 1332% 434% 162% -- -18% -25% -46% -62% -63% -65% -70% -74% -77% -78% -87% -92% -92% -92% -95% -95% Text::FormatTable 200/s 1668% 560% 223% 23% -- -7% -34% -53% -54% -57% -63% -69% -72% -73% -84% -90% -90% -90% -94% -94% Text::Table::TinyColorWide 217/s 1817% 615% 251% 33% 8% -- -28% -49% -50% -54% -59% -66% -70% -70% -82% -90% -90% -90% -94% -94% Text::Table::TinyWide 304/s 2586% 903% 392% 87% 51% 40% -- -29% -30% -36% -43% -52% -58% -58% -75% -85% -86% -86% -92% -92% Text::TabularDisplay 431/s 3710% 1322% 598% 165% 115% 98% 41% -- -1% -9% -20% -33% -41% -41% -65% -80% -80% -80% -88% -89% Text::Table::Manifold 439/s 3777% 1347% 610% 170% 119% 102% 44% 1% -- -7% -18% -32% -40% -40% -65% -79% -79% -80% -88% -88% Text::Table::Tiny 477/s 4109% 1471% 671% 193% 138% 119% 56% 10% 8% -- -11% -26% -35% -35% -62% -78% -78% -78% -87% -88% Text::MarkdownTable 540/s 4678% 1683% 775% 233% 170% 149% 77% 25% 23% 13% -- -16% -26% -27% -57% -75% -75% -75% -85% -86% Text::Table 646/s 5603% 2029% 945% 298% 222% 197% 112% 49% 47% 35% 19% -- -12% -12% -49% -70% -70% -70% -83% -83% Text::Table::TinyColor 735/s 6400% 2326% 1091% 353% 267% 238% 141% 70% 67% 54% 36% 13% -- 0% -41% -66% -66% -66% -80% -81% Text::Table::HTML 743/s 6448% 2344% 1099% 357% 270% 241% 143% 71% 68% 55% 37% 14% 0% -- -41% -65% -65% -66% -80% -81% Text::Table::HTML::DataTables 1300/s 11089% 4077% 1950% 681% 532% 483% 316% 193% 188% 165% 134% 96% 72% 70% -- -41% -41% -42% -66% -68% Text::Table::Org 2170/s 19075% 7058% 3414% 1238% 984% 900% 613% 403% 394% 355% 301% 236% 195% 192% 71% -- 0% -1% -43% -45% Text::Table::CSV 2170/s 19117% 7073% 3421% 1241% 986% 902% 615% 404% 395% 356% 302% 236% 195% 193% 71% 0% -- -1% -43% -45% Text::Table::TinyBorderStyle 2210/s 19457% 7200% 3484% 1265% 1006% 919% 627% 413% 404% 364% 309% 242% 200% 198% 74% 1% 1% -- -42% -44% Text::Table::Any 3810/s 33640% 12495% 6083% 2254% 1808% 1659% 1155% 785% 770% 701% 606% 491% 419% 415% 201% 75% 75% 72% -- -3% Text::Table::Sprintf 3960/s 34979% 12995% 6328% 2348% 1884% 1729% 1205% 820% 804% 733% 634% 515% 439% 435% 213% 82% 82% 79% 3% -- Legends: Text::ANSITable: participant=Text::ANSITable Text::ASCIITable: participant=Text::ASCIITable Text::FormatTable: participant=Text::FormatTable Text::MarkdownTable: participant=Text::MarkdownTable 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
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 | 300 | 4 | 0.00% | 46360.22% | 4.6e-05 | 20 | | Text::ANSITable | 1120 | 0.89 | 332.32% | 10646.84% | 2.7e-07 | 20 | | Text::Table::More | 2500 | 0.4 | 854.89% | 4765.52% | 4.3e-07 | 20 | | Text::ASCIITable | 6100 | 0.16 | 2256.09% | 1871.92% | 2.1e-07 | 20 | | Text::FormatTable | 8680 | 0.115 | 3238.29% | 1291.74% | 5.3e-08 | 20 | | Text::Table::Manifold | 9500 | 0.11 | 3561.69% | 1168.82% | 1.6e-07 | 20 | | Text::Table | 9600 | 0.1 | 3588.47% | 1159.61% | 2.1e-07 | 20 | | Text::Table::TinyColorWide | 9930 | 0.101 | 3721.66% | 1115.71% | 9.9e-08 | 23 | | Text::Table::TinyWide | 14000 | 0.0715 | 5280.40% | 763.51% | 2.7e-08 | 20 | | Text::Table::TinyBorderStyle | 14600 | 0.0683 | 5531.98% | 724.94% | 2.7e-08 | 20 | | Text::MarkdownTable | 16000 | 0.064 | 5901.06% | 674.20% | 1.1e-07 | 20 | | Text::Table::HTML::DataTables | 18000 | 0.055 | 6884.01% | 565.24% | 8.3e-08 | 33 | | Text::Table::Tiny | 18408.4 | 0.0543232 | 6983.55% | 555.89% | 0 | 20 | | Text::TabularDisplay | 18900 | 0.0529 | 7177.45% | 538.41% | 2.5e-08 | 22 | | Text::Table::TinyColor | 29300 | 0.0341 | 11168.24% | 312.31% | 1.3e-08 | 22 | | Text::Table::HTML | 38400 | 0.026 | 14681.96% | 214.30% | 1.3e-08 | 20 | | Text::Table::Org | 68200 | 0.0147 | 26145.72% | 77.02% | 6.1e-09 | 24 | | Text::Table::CSV | 95800 | 0.0104 | 36764.56% | 26.03% | 8.6e-09 | 27 | | Text::Table::Any | 108000 | 0.00928 | 41362.43% | 12.05% | 2.9e-09 | 26 | | Text::Table::Sprintf | 121000 | 0.00828 | 46360.22% | 0.00% | 2.6e-09 | 32 | +-------------------------------+-----------+-----------+-----------------------+-----------------------+---------+---------+
Rate Text::UnicodeBox::Table Text::ANSITable Text::Table::More Text::ASCIITable Text::FormatTable Text::Table::Manifold Text::Table::TinyColorWide Text::Table Text::Table::TinyWide Text::Table::TinyBorderStyle Text::MarkdownTable Text::Table::HTML::DataTables Text::Table::Tiny Text::TabularDisplay Text::Table::TinyColor Text::Table::HTML Text::Table::Org Text::Table::CSV Text::Table::Any Text::Table::Sprintf Text::UnicodeBox::Table 300/s -- -77% -90% -96% -97% -97% -97% -97% -98% -98% -98% -98% -98% -98% -99% -99% -99% -99% -99% -99% Text::ANSITable 1120/s 349% -- -55% -82% -87% -87% -88% -88% -91% -92% -92% -93% -93% -94% -96% -97% -98% -98% -98% -99% Text::Table::More 2500/s 900% 122% -- -60% -71% -72% -74% -75% -82% -82% -84% -86% -86% -86% -91% -93% -96% -97% -97% -97% Text::ASCIITable 6100/s 2400% 456% 150% -- -28% -31% -36% -37% -55% -57% -60% -65% -66% -66% -78% -83% -90% -93% -94% -94% Text::FormatTable 8680/s 3378% 673% 247% 39% -- -4% -12% -13% -37% -40% -44% -52% -52% -54% -70% -77% -87% -90% -91% -92% Text::Table::Manifold 9500/s 3536% 709% 263% 45% 4% -- -8% -9% -35% -37% -41% -50% -50% -51% -69% -76% -86% -90% -91% -92% Text::Table::TinyColorWide 9930/s 3860% 781% 296% 58% 13% 8% -- 0% -29% -32% -36% -45% -46% -47% -66% -74% -85% -89% -90% -91% Text::Table 9600/s 3900% 790% 300% 59% 14% 9% 1% -- -28% -31% -36% -45% -45% -47% -65% -74% -85% -89% -90% -91% Text::Table::TinyWide 14000/s 5494% 1144% 459% 123% 60% 53% 41% 39% -- -4% -10% -23% -24% -26% -52% -63% -79% -85% -87% -88% Text::Table::TinyBorderStyle 14600/s 5756% 1203% 485% 134% 68% 61% 47% 46% 4% -- -6% -19% -20% -22% -50% -61% -78% -84% -86% -87% Text::MarkdownTable 16000/s 6150% 1290% 525% 150% 79% 71% 57% 56% 11% 6% -- -14% -15% -17% -46% -59% -77% -83% -85% -87% Text::Table::HTML::DataTables 18000/s 7172% 1518% 627% 190% 109% 100% 83% 81% 29% 24% 16% -- -1% -3% -38% -52% -73% -81% -83% -84% Text::Table::Tiny 18408.4/s 7263% 1538% 636% 194% 111% 102% 85% 84% 31% 25% 17% 1% -- -2% -37% -52% -72% -80% -82% -84% Text::TabularDisplay 18900/s 7461% 1582% 656% 202% 117% 107% 90% 89% 35% 29% 20% 3% 2% -- -35% -50% -72% -80% -82% -84% Text::Table::TinyColor 29300/s 11630% 2509% 1073% 369% 237% 222% 196% 193% 109% 100% 87% 61% 59% 55% -- -23% -56% -69% -72% -75% Text::Table::HTML 38400/s 15284% 3323% 1438% 515% 342% 323% 288% 284% 175% 162% 146% 111% 108% 103% 31% -- -43% -60% -64% -68% Text::Table::Org 68200/s 27110% 5954% 2621% 988% 682% 648% 587% 580% 386% 364% 335% 274% 269% 259% 131% 76% -- -29% -36% -43% Text::Table::CSV 95800/s 38361% 8457% 3746% 1438% 1005% 957% 871% 861% 587% 556% 515% 428% 422% 408% 227% 150% 41% -- -10% -20% Text::Table::Any 108000/s 43003% 9490% 4210% 1624% 1139% 1085% 988% 977% 670% 635% 589% 492% 485% 470% 267% 180% 58% 12% -- -10% Text::Table::Sprintf 121000/s 48209% 10648% 4730% 1832% 1288% 1228% 1119% 1107% 763% 724% 672% 564% 556% 538% 311% 214% 77% 25% 12% -- Legends: Text::ANSITable: participant=Text::ANSITable Text::ASCIITable: participant=Text::ASCIITable Text::FormatTable: participant=Text::FormatTable Text::MarkdownTable: participant=Text::MarkdownTable 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
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 | 600 | 2 | 0.00% | 61075.10% | 6.5e-05 | 20 | | Text::ANSITable | 4020 | 0.249 | 586.14% | 8815.88% | 2.1e-07 | 21 | | Text::Table::More | 9500 | 0.11 | 1524.04% | 3666.85% | 2.7e-07 | 20 | | Text::Table::Manifold | 16000 | 0.062 | 2650.29% | 2124.32% | 1.2e-07 | 25 | | Text::Table::TinyBorderStyle | 19000 | 0.052 | 3155.00% | 1779.42% | 1.2e-07 | 25 | | Text::ASCIITable | 21000 | 0.047 | 3555.71% | 1573.41% | 5.3e-08 | 20 | | Text::Table::HTML::DataTables | 25000 | 0.04 | 4152.36% | 1338.61% | 9.5e-08 | 25 | | Text::Table | 26000 | 0.039 | 4295.16% | 1291.87% | 5.3e-08 | 20 | | Text::MarkdownTable | 31000 | 0.033 | 5151.57% | 1064.89% | 5.3e-08 | 20 | | Text::FormatTable | 43000 | 0.023 | 7228.34% | 734.77% | 2.7e-08 | 30 | | Text::Table::TinyColorWide | 59000 | 0.017 | 9966.01% | 507.74% | 2.7e-08 | 20 | | Text::Table::Tiny | 65800 | 0.0152 | 11142.60% | 444.14% | 5.8e-09 | 26 | | Text::Table::TinyWide | 75800 | 0.0132 | 12842.13% | 372.68% | 6.7e-09 | 20 | | Text::TabularDisplay | 76700 | 0.013 | 12990.18% | 367.34% | 6.5e-09 | 21 | | Text::Table::TinyColor | 115103 | 0.00868789 | 19555.45% | 211.24% | 0 | 23 | | Text::Table::HTML | 180000 | 0.0056 | 30532.11% | 99.71% | 6.7e-09 | 20 | | Text::Table::Org | 180000 | 0.0054 | 31396.78% | 94.23% | 6.7e-09 | 20 | | Text::Table::Any | 258245 | 0.00387228 | 43999.10% | 38.72% | 0 | 20 | | Text::Table::Sprintf | 352000 | 0.00284 | 60033.82% | 1.73% | 7.8e-10 | 23 | | Text::Table::CSV | 358000 | 0.00279 | 61075.10% | 0.00% | 8.3e-10 | 20 | +-------------------------------+-----------+------------+-----------------------+-----------------------+---------+---------+
Rate Text::UnicodeBox::Table Text::ANSITable Text::Table::More Text::Table::Manifold Text::Table::TinyBorderStyle Text::ASCIITable Text::Table::HTML::DataTables Text::Table Text::MarkdownTable Text::FormatTable Text::Table::TinyColorWide Text::Table::Tiny Text::Table::TinyWide Text::TabularDisplay Text::Table::TinyColor Text::Table::HTML Text::Table::Org Text::Table::Any Text::Table::Sprintf Text::Table::CSV Text::UnicodeBox::Table 600/s -- -87% -94% -96% -97% -97% -98% -98% -98% -98% -99% -99% -99% -99% -99% -99% -99% -99% -99% -99% Text::ANSITable 4020/s 703% -- -55% -75% -79% -81% -83% -84% -86% -90% -93% -93% -94% -94% -96% -97% -97% -98% -98% -98% Text::Table::More 9500/s 1718% 126% -- -43% -52% -57% -63% -64% -70% -79% -84% -86% -88% -88% -92% -94% -95% -96% -97% -97% Text::Table::Manifold 16000/s 3125% 301% 77% -- -16% -24% -35% -37% -46% -62% -72% -75% -78% -79% -85% -90% -91% -93% -95% -95% Text::Table::TinyBorderStyle 19000/s 3746% 378% 111% 19% -- -9% -23% -25% -36% -55% -67% -70% -74% -75% -83% -89% -89% -92% -94% -94% Text::ASCIITable 21000/s 4155% 429% 134% 31% 10% -- -14% -17% -29% -51% -63% -67% -71% -72% -81% -88% -88% -91% -93% -94% Text::Table::HTML::DataTables 25000/s 4900% 522% 175% 55% 29% 17% -- -2% -17% -42% -57% -62% -67% -67% -78% -86% -86% -90% -92% -93% Text::Table 26000/s 5028% 538% 182% 58% 33% 20% 2% -- -15% -41% -56% -61% -66% -66% -77% -85% -86% -90% -92% -92% Text::MarkdownTable 31000/s 5960% 654% 233% 87% 57% 42% 21% 18% -- -30% -48% -53% -60% -60% -73% -83% -83% -88% -91% -91% Text::FormatTable 43000/s 8595% 982% 378% 169% 126% 104% 73% 69% 43% -- -26% -33% -42% -43% -62% -75% -76% -83% -87% -87% Text::Table::TinyColorWide 59000/s 11664% 1364% 547% 264% 205% 176% 135% 129% 94% 35% -- -10% -22% -23% -48% -67% -68% -77% -83% -83% Text::Table::Tiny 65800/s 13057% 1538% 623% 307% 242% 209% 163% 156% 117% 51% 11% -- -13% -14% -42% -63% -64% -74% -81% -81% Text::Table::TinyWide 75800/s 15051% 1786% 733% 369% 293% 256% 203% 195% 150% 74% 28% 15% -- -1% -34% -57% -59% -70% -78% -78% Text::TabularDisplay 76700/s 15284% 1815% 746% 376% 300% 261% 207% 200% 153% 76% 30% 16% 1% -- -33% -56% -58% -70% -78% -78% Text::Table::TinyColor 115103/s 22920% 2766% 1166% 613% 498% 440% 360% 348% 279% 164% 95% 74% 51% 49% -- -35% -37% -55% -67% -67% Text::Table::HTML 180000/s 35614% 4346% 1864% 1007% 828% 739% 614% 596% 489% 310% 203% 171% 135% 132% 55% -- -3% -30% -49% -50% Text::Table::Org 180000/s 36937% 4511% 1937% 1048% 862% 770% 640% 622% 511% 325% 214% 181% 144% 140% 60% 3% -- -28% -47% -48% Text::Table::Any 258245/s 51549% 6330% 2740% 1501% 1242% 1113% 932% 907% 752% 493% 339% 292% 240% 235% 124% 44% 39% -- -26% -27% Text::Table::Sprintf 352000/s 70322% 8667% 3773% 2083% 1730% 1554% 1308% 1273% 1061% 709% 498% 435% 364% 357% 205% 97% 90% 36% -- -1% Text::Table::CSV 358000/s 71584% 8824% 3842% 2122% 1763% 1584% 1333% 1297% 1082% 724% 509% 444% 373% 365% 211% 100% 93% 38% 1% -- Legends: Text::ANSITable: participant=Text::ANSITable Text::ASCIITable: participant=Text::ASCIITable Text::FormatTable: participant=Text::FormatTable Text::MarkdownTable: participant=Text::MarkdownTable 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
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 | 53 | 19 | 0.00% | 35533.33% | 3.7e-05 | 20 | | Text::ANSITable | 143 | 7.01 | 168.54% | 13169.40% | 2.5e-06 | 20 | | Text::Table::More | 320 | 3.2 | 494.57% | 5893.12% | 3.5e-06 | 24 | | Text::ASCIITable | 641 | 1.56 | 1105.52% | 2855.85% | 6.4e-07 | 20 | | Text::FormatTable | 883 | 1.13 | 1561.88% | 2044.16% | 6.9e-07 | 20 | | Text::Table::TinyColorWide | 1100 | 0.909 | 1969.45% | 1621.87% | 2.1e-07 | 20 | | Text::Table | 1480 | 0.675 | 2688.68% | 1177.78% | 4.3e-07 | 20 | | Text::Table::TinyWide | 1550 | 0.645 | 2816.27% | 1121.88% | 2.7e-07 | 20 | | Text::Table::Manifold | 2040 | 0.49 | 3741.03% | 827.70% | 4.3e-07 | 20 | | Text::Table::Tiny | 2470 | 0.405 | 4541.36% | 667.73% | 2.6e-07 | 21 | | Text::TabularDisplay | 2790 | 0.358 | 5152.33% | 578.43% | 2.1e-07 | 20 | | Text::Table::TinyColor | 3700 | 0.27 | 6856.23% | 412.25% | 4.9e-08 | 24 | | Text::Table::TinyBorderStyle | 4080 | 0.245 | 7571.15% | 364.51% | 2.1e-07 | 20 | | Text::MarkdownTable | 4340 | 0.23 | 8063.82% | 336.48% | 2e-07 | 22 | | Text::Table::HTML | 4780 | 0.209 | 8900.61% | 295.90% | 5.3e-08 | 20 | | Text::Table::HTML::DataTables | 6200 | 0.16 | 11553.86% | 205.76% | 2.6e-07 | 21 | | Text::Table::Org | 11000 | 0.09 | 20879.74% | 69.85% | 1.1e-07 | 20 | | Text::Table::CSV | 14356.1 | 0.0696569 | 26910.63% | 31.92% | 0 | 28 | | Text::Table::Any | 16000 | 0.062 | 30132.43% | 17.86% | 1e-07 | 22 | | Text::Table::Sprintf | 18900 | 0.0528 | 35533.33% | 0.00% | 2.1e-08 | 32 | +-------------------------------+-----------+------------+-----------------------+-----------------------+---------+---------+
Rate Text::UnicodeBox::Table Text::ANSITable Text::Table::More Text::ASCIITable Text::FormatTable Text::Table::TinyColorWide Text::Table Text::Table::TinyWide Text::Table::Manifold Text::Table::Tiny Text::TabularDisplay Text::Table::TinyColor Text::Table::TinyBorderStyle Text::MarkdownTable Text::Table::HTML Text::Table::HTML::DataTables Text::Table::Org Text::Table::CSV Text::Table::Any Text::Table::Sprintf Text::UnicodeBox::Table 53/s -- -63% -83% -91% -94% -95% -96% -96% -97% -97% -98% -98% -98% -98% -98% -99% -99% -99% -99% -99% Text::ANSITable 143/s 171% -- -54% -77% -83% -87% -90% -90% -93% -94% -94% -96% -96% -96% -97% -97% -98% -99% -99% -99% Text::Table::More 320/s 493% 119% -- -51% -64% -71% -78% -79% -84% -87% -88% -91% -92% -92% -93% -95% -97% -97% -98% -98% Text::ASCIITable 641/s 1117% 349% 105% -- -27% -41% -56% -58% -68% -74% -77% -82% -84% -85% -86% -89% -94% -95% -96% -96% Text::FormatTable 883/s 1581% 520% 183% 38% -- -19% -40% -42% -56% -64% -68% -76% -78% -79% -81% -85% -92% -93% -94% -95% Text::Table::TinyColorWide 1100/s 1990% 671% 252% 71% 24% -- -25% -29% -46% -55% -60% -70% -73% -74% -77% -82% -90% -92% -93% -94% Text::Table 1480/s 2714% 938% 374% 131% 67% 34% -- -4% -27% -40% -46% -60% -63% -65% -69% -76% -86% -89% -90% -92% Text::Table::TinyWide 1550/s 2845% 986% 396% 141% 75% 40% 4% -- -24% -37% -44% -58% -62% -64% -67% -75% -86% -89% -90% -91% Text::Table::Manifold 2040/s 3777% 1330% 553% 218% 130% 85% 37% 31% -- -17% -26% -44% -50% -53% -57% -67% -81% -85% -87% -89% Text::Table::Tiny 2470/s 4591% 1630% 690% 285% 179% 124% 66% 59% 20% -- -11% -33% -39% -43% -48% -60% -77% -82% -84% -86% Text::TabularDisplay 2790/s 5207% 1858% 793% 335% 215% 153% 88% 80% 36% 13% -- -24% -31% -35% -41% -55% -74% -80% -82% -85% Text::Table::TinyColor 3700/s 6937% 2496% 1085% 477% 318% 236% 150% 138% 81% 50% 32% -- -9% -14% -22% -40% -66% -74% -77% -80% Text::Table::TinyBorderStyle 4080/s 7655% 2761% 1206% 536% 361% 271% 175% 163% 100% 65% 46% 10% -- -6% -14% -34% -63% -71% -74% -78% Text::MarkdownTable 4340/s 8160% 2947% 1291% 578% 391% 295% 193% 180% 113% 76% 55% 17% 6% -- -9% -30% -60% -69% -73% -77% Text::Table::HTML 4780/s 8990% 3254% 1431% 646% 440% 334% 222% 208% 134% 93% 71% 29% 17% 10% -- -23% -56% -66% -70% -74% Text::Table::HTML::DataTables 6200/s 11775% 4281% 1900% 875% 606% 468% 321% 303% 206% 153% 123% 68% 53% 43% 30% -- -43% -56% -61% -67% Text::Table::Org 11000/s 21011% 7688% 3455% 1633% 1155% 910% 650% 616% 444% 350% 297% 200% 172% 155% 132% 77% -- -22% -31% -41% Text::Table::CSV 14356.1/s 27176% 9963% 4493% 2139% 1522% 1204% 869% 825% 603% 481% 413% 287% 251% 230% 200% 129% 29% -- -10% -24% Text::Table::Any 16000/s 30545% 11206% 5061% 2416% 1722% 1366% 988% 940% 690% 553% 477% 335% 295% 270% 237% 158% 45% 12% -- -14% Text::Table::Sprintf 18900/s 35884% 13176% 5960% 2854% 2040% 1621% 1178% 1121% 828% 667% 578% 411% 364% 335% 295% 203% 70% 31% 17% -- Legends: Text::ANSITable: participant=Text::ANSITable Text::ASCIITable: participant=Text::ASCIITable Text::FormatTable: participant=Text::FormatTable Text::MarkdownTable: participant=Text::MarkdownTable 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
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 | 130 | 124 | 0.00% | 2253.61% | 0.00019 | 20 | | Text::Table::Manifold | 71 | 65 | 77.51% | 1225.91% | 0.00012 | 20 | | Text::ANSITable | 37 | 31 | 237.43% | 597.51% | 0.00014 | 20 | | Text::MarkdownTable | 36 | 30 | 254.32% | 564.26% | 9e-05 | 20 | | Text::Table::TinyColorWide | 28 | 22 | 346.25% | 427.42% | 0.0002 | 20 | | Text::Table::TinyWide | 26 | 20 | 389.24% | 381.07% | 0.00014 | 21 | | Text::Table::More | 21 | 15 | 513.44% | 283.67% | 0.0001 | 21 | | Text::Table | 20 | 14 | 533.68% | 271.42% | 0.00016 | 20 | | Text::ASCIITable | 20 | 14 | 727.66% | 184.37% | 0.0002 | 21 | | Text::Table::Tiny | 20 | 14 | 742.57% | 179.34% | 0.00016 | 20 | | Text::Table::TinyColor | 10 | 4 | 959.53% | 122.14% | 0.00021 | 20 | | Text::FormatTable | 10 | 4 | 974.94% | 118.95% | 0.00015 | 20 | | Text::Table::TinyBorderStyle | 10 | 4 | 1217.24% | 78.68% | 0.00012 | 20 | | Text::Table::HTML | 8 | 2 | 1429.79% | 53.85% | 0.00013 | 20 | | Text::TabularDisplay | 8 | 2 | 1434.59% | 53.37% | 0.00015 | 20 | | Text::Table::Any | 7.6 | 1.6 | 1575.00% | 40.51% | 6.1e-05 | 20 | | Text::Table::HTML::DataTables | 8 | 2 | 1575.72% | 40.45% | 0.00013 | 22 | | Text::Table::CSV | 6 | 0 | 1848.42% | 20.80% | 0.00012 | 20 | | perl -e1 (baseline) | 6 | 0 | 1891.09% | 18.21% | 9.4e-05 | 20 | | Text::Table::Org | 6 | 0 | 2009.07% | 11.59% | 0.00022 | 20 | | Text::Table::Sprintf | 5 | -1 | 2253.61% | 0.00% | 0.00019 | 21 | +-------------------------------+-----------+-------------------+-----------------------+-----------------------+-----------+---------+
Rate Text::UnicodeBox::Table Text::Table::Manifold Text::ANSITable Text::MarkdownTable Text::Table::TinyColorWide Text::Table::TinyWide Text::Table::More Text::Table Text::ASCIITable Text::Table::Tiny Text::Table::TinyColor Text::FormatTable Text::Table::TinyBorderStyle Text::Table::HTML Text::TabularDisplay Text::Table::HTML::DataTables Text::Table::Any Text::Table::CSV perl -e1 (baseline) Text::Table::Org Text::Table::Sprintf Text::UnicodeBox::Table 7.7/s -- -45% -71% -72% -78% -80% -83% -84% -84% -84% -92% -92% -92% -93% -93% -93% -94% -95% -95% -95% -96% Text::Table::Manifold 14.1/s 83% -- -47% -49% -60% -63% -70% -71% -71% -71% -85% -85% -85% -88% -88% -88% -89% -91% -91% -91% -92% Text::ANSITable 27.0/s 251% 91% -- -2% -24% -29% -43% -45% -45% -45% -72% -72% -72% -78% -78% -78% -79% -83% -83% -83% -86% Text::MarkdownTable 27.8/s 261% 97% 2% -- -22% -27% -41% -44% -44% -44% -72% -72% -72% -77% -77% -77% -78% -83% -83% -83% -86% Text::Table::TinyColorWide 35.7/s 364% 153% 32% 28% -- -7% -25% -28% -28% -28% -64% -64% -64% -71% -71% -71% -72% -78% -78% -78% -82% Text::Table::TinyWide 38.5/s 400% 173% 42% 38% 7% -- -19% -23% -23% -23% -61% -61% -61% -69% -69% -69% -70% -76% -76% -76% -80% Text::Table::More 47.6/s 519% 238% 76% 71% 33% 23% -- -4% -4% -4% -52% -52% -52% -61% -61% -61% -63% -71% -71% -71% -76% Text::Table 50.0/s 550% 254% 85% 80% 39% 30% 5% -- 0% 0% -50% -50% -50% -60% -60% -60% -62% -70% -70% -70% -75% Text::ASCIITable 50.0/s 550% 254% 85% 80% 39% 30% 5% 0% -- 0% -50% -50% -50% -60% -60% -60% -62% -70% -70% -70% -75% Text::Table::Tiny 50.0/s 550% 254% 85% 80% 39% 30% 5% 0% 0% -- -50% -50% -50% -60% -60% -60% -62% -70% -70% -70% -75% Text::Table::TinyColor 100.0/s 1200% 610% 270% 260% 179% 160% 110% 100% 100% 100% -- 0% 0% -19% -19% -19% -24% -40% -40% -40% -50% Text::FormatTable 100.0/s 1200% 610% 270% 260% 179% 160% 110% 100% 100% 100% 0% -- 0% -19% -19% -19% -24% -40% -40% -40% -50% Text::Table::TinyBorderStyle 100.0/s 1200% 610% 270% 260% 179% 160% 110% 100% 100% 100% 0% 0% -- -19% -19% -19% -24% -40% -40% -40% -50% Text::Table::HTML 125.0/s 1525% 787% 362% 350% 250% 225% 162% 150% 150% 150% 25% 25% 25% -- 0% 0% -5% -25% -25% -25% -37% Text::TabularDisplay 125.0/s 1525% 787% 362% 350% 250% 225% 162% 150% 150% 150% 25% 25% 25% 0% -- 0% -5% -25% -25% -25% -37% Text::Table::HTML::DataTables 125.0/s 1525% 787% 362% 350% 250% 225% 162% 150% 150% 150% 25% 25% 25% 0% 0% -- -5% -25% -25% -25% -37% Text::Table::Any 131.6/s 1610% 834% 386% 373% 268% 242% 176% 163% 163% 163% 31% 31% 31% 5% 5% 5% -- -21% -21% -21% -34% Text::Table::CSV 166.7/s 2066% 1083% 516% 500% 366% 333% 250% 233% 233% 233% 66% 66% 66% 33% 33% 33% 26% -- 0% 0% -16% perl -e1 (baseline) 166.7/s 2066% 1083% 516% 500% 366% 333% 250% 233% 233% 233% 66% 66% 66% 33% 33% 33% 26% 0% -- 0% -16% Text::Table::Org 166.7/s 2066% 1083% 516% 500% 366% 333% 250% 233% 233% 233% 66% 66% 66% 33% 33% 33% 26% 0% 0% -- -16% Text::Table::Sprintf 200.0/s 2500% 1320% 640% 620% 459% 420% 320% 300% 300% 300% 100% 100% 100% 60% 60% 60% 52% 19% 19% 19% -- Legends: Text::ANSITable: mod_overhead_time=31 participant=Text::ANSITable Text::ASCIITable: mod_overhead_time=14 participant=Text::ASCIITable Text::FormatTable: mod_overhead_time=4 participant=Text::FormatTable Text::MarkdownTable: mod_overhead_time=30 participant=Text::MarkdownTable Text::Table: mod_overhead_time=14 participant=Text::Table Text::Table::Any: mod_overhead_time=1.6 participant=Text::Table::Any Text::Table::CSV: mod_overhead_time=0 participant=Text::Table::CSV Text::Table::HTML: mod_overhead_time=2 participant=Text::Table::HTML Text::Table::HTML::DataTables: mod_overhead_time=2 participant=Text::Table::HTML::DataTables Text::Table::Manifold: mod_overhead_time=65 participant=Text::Table::Manifold Text::Table::More: mod_overhead_time=15 participant=Text::Table::More Text::Table::Org: mod_overhead_time=0 participant=Text::Table::Org Text::Table::Sprintf: mod_overhead_time=-1 participant=Text::Table::Sprintf Text::Table::Tiny: mod_overhead_time=14 participant=Text::Table::Tiny Text::Table::TinyBorderStyle: mod_overhead_time=4 participant=Text::Table::TinyBorderStyle Text::Table::TinyColor: mod_overhead_time=4 participant=Text::Table::TinyColor Text::Table::TinyColorWide: mod_overhead_time=22 participant=Text::Table::TinyColorWide Text::Table::TinyWide: mod_overhead_time=20 participant=Text::Table::TinyWide Text::TabularDisplay: mod_overhead_time=2 participant=Text::TabularDisplay Text::UnicodeBox::Table: mod_overhead_time=124 participant=Text::UnicodeBox::Table 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.
--format html+datatables
This section shows what the output is like for (some of the) modules:
"Text::Table::Any"
+--------+--------+--------+ | col1 | col2 | col3 | +--------+--------+--------+ | row1.1 | row1.2 | row1.3 | | row2.1 | row2.2 | row2.3 | | row3.1 | row3.2 | row3.3 | | row4.1 | row4.2 | row4.3 | | row5.1 | row5.2 | row5.3 | +--------+--------+--------+
"Text::Table::Manifold"
"Text::ANSITable"
.--------+--------+--------. | col1 | col2 | col3 | +--------+--------+--------+ | row1.1 | row1.2 | row1.3 | | row2.1 | row2.2 | row2.3 | | row3.1 | row3.2 | row3.3 | | row4.1 | row4.2 | row4.3 | | row5.1 | row5.2 | row5.3 | `--------+--------+--------'
"Text::ASCIITable"
.--------------------------. | col1 | col2 | col3 | +--------+--------+--------+ | row1.1 | row1.2 | row1.3 | | row2.1 | row2.2 | row2.3 | | row3.1 | row3.2 | row3.3 | | row4.1 | row4.2 | row4.3 | | row5.1 | row5.2 | row5.3 | '--------+--------+--------'
"Text::FormatTable"
col1 |col2 |col3 row1.1|row1.2|row1.3 row2.1|row2.2|row2.3 row3.1|row3.2|row3.3 row4.1|row4.2|row4.3 row5.1|row5.2|row5.3
"Text::MarkdownTable"
| col1 | col2 | col3 | |--------|--------|--------| | row1.1 | row1.2 | row1.3 | | row2.1 | row2.2 | row2.3 | | row3.1 | row3.2 | row3.3 | | row4.1 | row4.2 | row4.3 | | row5.1 | row5.2 | row5.3 |
"Text::Table"
col1 col2 col3 row1.1 row1.2 row1.3 row2.1 row2.2 row2.3 row3.1 row3.2 row3.3 row4.1 row4.2 row4.3 row5.1 row5.2 row5.3
"Text::Table::Tiny"
"Text::Table::TinyBorderStyle"
"Text::Table::More"
.--------+--------+--------. | col1 | col2 | col3 | +========+========+========+ | row1.1 | row1.2 | row1.3 | | row2.1 | row2.2 | row2.3 | | row3.1 | row3.2 | row3.3 | | row4.1 | row4.2 | row4.3 | | row5.1 | row5.2 | row5.3 | `--------+--------+--------'
"Text::Table::Sprintf"
"Text::Table::TinyColor"
"Text::Table::TinyColorWide"
"Text::Table::TinyWide"
"Text::Table::Org"
| col1 | col2 | col3 | |--------+--------+--------| | row1.1 | row1.2 | row1.3 | | row2.1 | row2.2 | row2.3 | | row3.1 | row3.2 | row3.3 | | row4.1 | row4.2 | row4.3 | | row5.1 | row5.2 | row5.3 |
"Text::Table::CSV"
"col1","col2","col3" "row1.1","row1.2","row1.3" "row2.1","row2.2","row2.3" "row3.1","row3.2","row3.3" "row4.1","row4.2","row4.3" "row5.1","row5.2","row5.3"
"Text::Table::HTML"
<table> <thead> <tr><th>col1</th><th>col2</th><th>col3</th></tr> </thead> <tbody> <tr><td>row1.1</td><td>row1.2</td><td>row1.3</td></tr> <tr><td>row2.1</td><td>row2.2</td><td>row2.3</td></tr> <tr><td>row3.1</td><td>row3.2</td><td>row3.3</td></tr> <tr><td>row4.1</td><td>row4.2</td><td>row4.3</td></tr> <tr><td>row5.1</td><td>row5.2</td><td>row5.3</td></tr> </tbody> </table>
"Text::Table::HTML::DataTables"
<html> <head> <link rel="stylesheet" type="text/css" href="file:///home/s1/perl5/perlbrew/perls/perl-5.34.0/lib/site_perl/5.34.0/auto/share/dist/Text-Table-HTML-DataTables/datatables-1.10.22/datatables.css"> <script src="file:///home/s1/perl5/perlbrew/perls/perl-5.34.0/lib/site_perl/5.34.0/auto/share/dist/Text-Table-HTML-DataTables/jquery-2.2.4/jquery-2.2.4.min.js"></script> <script src="file:///home/s1/perl5/perlbrew/perls/perl-5.34.0/lib/site_perl/5.34.0/auto/share/dist/Text-Table-HTML-DataTables/datatables-1.10.22/datatables.js"></script> <script>var dt_opts = {"dom":"lQfrtip","buttons":["colvis","print"]}; $(document).ready(function() { $("table").DataTable(dt_opts); });</script> </head> <body> <table> <thead> <tr><th>col1</th><th>col2</th><th>col3</th></tr> </thead> <tbody> <tr><td>row1.1</td><td>row1.2</td><td>row1.3</td></tr> <tr><td>row2.1</td><td>row2.2</td><td>row2.3</td></tr> <tr><td>row3.1</td><td>row3.2</td><td>row3.3</td></tr> <tr><td>row4.1</td><td>row4.2</td><td>row4.3</td></tr> <tr><td>row5.1</td><td>row5.2</td><td>row5.3</td></tr> </tbody> </table> </body> </html>
"Text::TabularDisplay"
An Acme::CPANModules::* module, like this module, contains just a list of module names that share a common characteristics. It is a way to categorize modules and document CPAN. See Acme::CPANModules for more details.
Aside from reading this Acme::CPANModules module's POD documentation, you can install all the listed modules (entries) using cpanm-cpanmodules script (from App::cpanm::cpanmodules distribution):
% cpanm-cpanmodules -n TextTable
Alternatively you can use the cpanmodules CLI (from App::cpanmodules distribution):
% cpanmodules ls-entries TextTable | cpanm -n
or Acme::CM::Get:
% perl -MAcme::CM::Get=TextTable -E'say $_->{module} for @{ $LIST->{entries} }' | cpanm -n
or directly:
% perl -MAcme::CPANModules::TextTable -E'say $_->{module} for @{ $Acme::CPANModules::TextTable::LIST->{entries} }' | cpanm -n
This Acme::CPANModules module contains benchmark instructions. You can run a benchmark for some/all the modules listed in this Acme::CPANModules module using the bencher CLI (from Bencher distribution):
This Acme::CPANModules module also helps lcpan produce a more meaningful result for lcpan related-mods command when it comes to finding related modules for the modules listed in this Acme::CPANModules module.
lcpan related-mods
Please visit the project's homepage at https://metacpan.org/release/Acme-CPANModules-TextTable.
Source repository is at https://github.com/perlancar/perl-Acme-CPANModules-TextTable.
Please report any bugs or feature requests on the bugtracker website https://rt.cpan.org/Public/Dist/Display.html?Name=Acme-CPANModules-TextTable
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.
Acme::CPANModules::HTMLTable
Acme::CPANModules - about the Acme::CPANModules namespace
cpanmodules - CLI tool to let you browse/view the lists
perlancar <perlancar@cpan.org>
This software is copyright (c) 2021, 2020, 2019 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.
To install Acme::CPANModules::TextTable, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Acme::CPANModules::TextTable
CPAN shell
perl -MCPAN -e shell install Acme::CPANModules::TextTable
For more information on module installation, please visit the detailed CPAN module installation guide.