Miguel has benchmarked his solution across the supported languages, measured against the IBM (decQuad), Intel (libbid), and Python (libmpdec) reference libraries and each language’s idiomatic decimal type. The detailed results are published per language — pick a language below for its realistic financial-mix (P-fin) headline followed by the per-operation band tables (add, subtract, multiply, divide, FMA), d128 vs the alternatives available to it, with explicit ratios.
Two cross-cutting views complement the per-language pages:
- Port-Comparison Benchmark Results — each port’s own d128 band shape on identical operands (all ports, no alternatives).
- Benchmark Key — the shared legend: category codes, magnitude profiles, timing modes, and method.
Methodology and the operation-category taxonomy are in the Benchmark Matrix.
Per-language results
Click on each language below to see the benchmark results and ratio by operation.C
C Benchmark Results → — FinMix headline, then add / subtract / multiply / divide / FMA band tables (arm64 + x86_64), with ratios.
Ratio by Operation. Each row is the ratio for that reference library on x86_64 (Intel i9-9880H): ratio = libbid / Miguel, ratio = decQuad / Miguel, or ratio = mpdecimal / Miguel (> 1× ⇒ d128 faster).
| Add | Subtract | Multiply | Divide | |
|---|---|---|---|---|
| ratio = libbid / Miguel | 6× | 5× | 1.7× – 18× | 0.9× – 2.8× |
| ratio = decQuad / Miguel | 8× | 14× | 2.0× – 21× | 2.2× – 9× |
| ratio = mpdecimal / Miguel | 7× | 6× | 1.2× – 12× | 2.5× – 14× |
C#
C# Benchmark Results → — FinMix headline, then add / subtract / multiply / divide / FMA band tables (arm64 + x86_64), with ratios.
Ratio by Operation. Each row is the ratio for that reference/idiom peer on x86_64 (Intel i9-9880H): ratio = System.Decimal / Miguel or ratio = Decimal128 (.NET 11) / Miguel (> 1× ⇒ d128 faster). System.Decimal has no wide-product multiply band, so that cell is blank.
| Add | Subtract | Multiply | Divide | |
|---|---|---|---|---|
| ratio = System.Decimal / Miguel | 0.9× | 0.7× | — | 0.6× – 5× |
| ratio = Decimal128 (.NET 11) / Miguel | 2.2× | 2.2× | 2.4× – 5× | 1.6× – 36× |
Java
Java Benchmark Results → — FinMix headline, then add / subtract / multiply / divide / FMA band tables (arm64 + x86_64), with ratios.
Ratio by Operation. The ratio for Java’s idiom peer on x86_64 (Intel i9-9880H): ratio = BigDecimal / Miguel (> 1× ⇒ d128 faster).
| Add | Subtract | Multiply | Divide | |
|---|---|---|---|---|
| ratio = BigDecimal / Miguel | 5× | 4× | 3× | 2.0× – 54× |
Kotlin KMP
Kotlin Benchmark Results → — FinMix headline, then add / subtract / multiply / divide / FMA band tables (arm64 + x86_64), with ratios.
Ratio by Operation. The ratio for Kotlin’s idiom peer on x86_64 (Intel i9-9880H): ratio = BigDecimal / Miguel (> 1× ⇒ d128 faster).
| Add | Subtract | Multiply | Divide | |
|---|---|---|---|---|
| ratio = BigDecimal / Miguel | 4× | 3× | 3× | 1.8× – 50× |
Swift
Swift Benchmark Results → — FinMix headline, then add / subtract / multiply / divide / FMA band tables (arm64 + x86_64), with ratios.
Ratio by Operation. The ratio for Swift’s idiom peer on x86_64 (Intel i9-9880H): ratio = Foundation.Decimal / Miguel (> 1× ⇒ d128 faster).
| Add | Subtract | Multiply | Divide | |
|---|---|---|---|---|
| ratio = Foundation.Decimal / Miguel | 107× | 107× | 25× – 181× | 16× – 775× |
Rust
Rust Benchmark Results → — FinMix headline, then add / subtract / multiply / divide / FMA band tables (arm64 + x86_64), with ratios.
Ratio by Operation. Each row is the ratio for that reference/idiom peer on x86_64 (Intel i9-9880H): ratio = rust_decimal / Miguel or ratio = libbid / Miguel (> 1× ⇒ d128 faster). rust_decimal has no wide-product multiply band (that falls back to libbid), and libbid isn’t used for add/subtract/divide, so those cells are blank.
| Add | Subtract | Multiply | Divide | |
|---|---|---|---|---|
| ratio = rust_decimal / Miguel | 2.1× | 1.9× | — | 0.6× – 5× |
| ratio = libbid / Miguel | — | — | 2.0× – 13× | — |
Go
Go Benchmark Results → — FinMix headline, then add / subtract / multiply / divide / FMA band tables (arm64 + x86_64), with ratios.
Ratio by Operation. Go has no in-language decimal peer and takes no libbid fallback, so there is no alternative to compute a ratio against.
Python
Python Benchmark Results → — FinMix headline, then add / subtract / multiply / divide / FMA band tables (arm64 + x86_64), with ratios.
Ratio by Operation. The ratio for Python’s idiom peer on x86_64 (Intel i9-9880H): ratio = decimal.Decimal / Miguel (> 1× ⇒ d128 faster).
| Add | Subtract | Multiply | Divide | |
|---|---|---|---|---|
| ratio = decimal.Decimal / Miguel | 3× | 2.9× | 1.9× – 3× | 1.8× – 4× |
Zig
Zig Benchmark Results → — FinMix headline, then add / subtract / multiply / divide / FMA band tables (arm64 + x86_64), with ratios.
Ratio by Operation. The ratio for Zig’s reference library on x86_64 (Intel i9-9880H): ratio = libbid / Miguel (> 1× ⇒ d128 faster). Zig has no in-language decimal peer.
| Add | Subtract | Multiply | Divide | |
|---|---|---|---|---|
| ratio = libbid / Miguel | 4× | 3× | 2.1× – 8× | 0.8× – 1.6× |