Benchmarks
Below is a all of the benchmarks currently conducted and built-in to the code of this repository for the purposes of testing and improving the implementation. For further detail, read the article here.
The specification for these benchmarks is as follows:
The latest of each library was used as of 05 January, 2024.
Windows 10 Pro machine, general user processes running in the background (but machine not being used).
AMD Ryzen 9 5950X @ 3400 MHz (16 Core Processor), 32.0 GB Physical Memory
Clang 15.0.3, latest available Clang at the time of generation with MSVC ABI.
Entire software stack for every dependency build under default CMake flags (including ICU and libiconv from vcpkg).
Anywhere from 150 to 10million samples per iteration, with mean (average) of 100 iterations forming transparent dots on graph.
Each bar graph is mean of the 150 iterations, with provided standard deviation-based error bars.
For the sake of keeping an almost identical set of bars in each graph, sometimes a library is explicitly shown as “unsupported”. “Unsupported” is different from doing a conversion but then failing, or doing a conversion and producing the wrong output.
If an error occurs during the benchmark, its graph will instead feature a short text blurb explaining what went wrong. The benchmarking code can be read to understand further what happened.
- In general, unless explicitly noted, the fastest possible API under the constraints was used to produce the data.
“Unbounded” means that, where shown, the available space left for writing was not considered.
“Unchecked” means that, where shown, the input was not validated before being converted.
“Well-Formed”, in the title, means that the input was well-formed.
(We do not do error benchmarks (yet).)
The categories of benchmarks are as follows: