Table Benchmark
This benchmark tests the performance of table implementations.
Benchmark Setup
A simple table with three columns (text, image, text) and varying number of rows is laid out, using the available table implementation together with automatic page breaking.
Each benchmark script can be invoked standalone in the following way: script-executable NR_ROWS
IMAGE_FILE OUTPUT_FILE
.
The list of the benchmarked libraries:
- HexaPDF
-
Homepage: http://hexapdf.gettalong.org
Language: Ruby
Version: Latest version - Prawn
-
Homepage: https://prawnpdf.org
Language: Ruby
Version: 2.4.0Prawn’s table implementation is available in the separate gem
prawn-table
. - ReportLab
-
Homepage: https://www.reportlab.com/opensource/
Language: Python
Version: 3.6.12 - fpdf2
-
Homepage: https://pyfpdf.github.io/fpdf2/
Language: Python
Version: 2.7.4
Results
These benchmark results are from 2023-08-03.
Time | Memory | File size | ||
---|---|---|---|---|
hexapdf | 10 | 226ms | 37.488KiB | 22.159 |
prawn | 10 | 206ms | 35.968KiB | 22.146 |
reportlab | 10 | 107ms | 29.780KiB | 22.007 |
fpdf2 | 10 | 171ms | 48.648KiB | 21.970 |
hexapdf | 100 | 276ms | 41.500KiB | 26.904 |
prawn | 100 | 327ms | 40.192KiB | 33.825 |
reportlab | 100 | 117ms | 30.168KiB | 28.077 |
fpdf2 | 100 | 196ms | 48.776KiB | 29.703 |
hexapdf | 1000 | 501ms | 51.284KiB | 73.909 |
prawn | 1000 | 1.356ms | 75.520KiB | 151.129 |
reportlab | 1000 | 224ms | 32.340KiB | 88.365 |
fpdf2 | 1000 | 453ms | 49.948KiB | 106.353 |
hexapdf | 10000 | 2.653ms | 151.316KiB | 546.297 |
prawn | 10000 | 13.047ms | 405.996KiB | 1.339.194 |
reportlab | 10000 | 3.837ms | 55.144KiB | 697.027 |
fpdf2 | 10000 | 3.052ms | 61.820KiB | 876.678 |