Skip to content

Comparisons — Arithmetic

Speed of decimal-scaled against the peer decimal crates on the arithmetic functions. See the Comparisons overview for the time units, the per-library precision model, and how to read the timings.

add

decimal-scaled — median time per call at each comparison scale (· = the tier cannot hold that precision):

Width @17 prec @28 prec @37 prec @152 prec
D18 321 ns · · ·
D38 406 ns 520 ns 536 ns ·
D57 476 ns 651 ns 651 ns ·
D76 761 ns 1 µs 1.02 µs ·
D115 1.99 µs 2.44 µs 2.63 µs ·
D153 3.77 µs 3.89 µs 4.29 µs 4.83 µs
D230 6.28 µs 6.07 µs 7.44 µs 8.1 µs
D307 11.5 µs 10.3 µs 11.7 µs 14.8 µs
D462 24.3 µs 18.2 µs 21.6 µs 28.3 µs
D616 35.7 µs 29.5 µs 31.2 µs 42.1 µs
D924 72.9 µs 59 µs 69.2 µs 89.5 µs
D1232 110 µs 84.9 µs 93.2 µs 129 µs

peers (fixed precision; each timed beside the matching decimal-scaled line):

Peer Precision Median vs decimal-scaled
fastnum 154 100 ns 0.021× @152
decimal-rs 38 70 ns 0.13× @37
g_math 38 546 ns 1× @37
rust_decimal 28 70 ns 0.13× @28
10 ns100 ns1 µs10 µs100 µs1 ms10 ms183857761151532303074626169241232significant-digit width (log)decimal-scaled @17 precdecimal-scaled @28 precdecimal-scaled @37 precdecimal-scaled @152 precfastnumdecimal-rsg_mathrust_decimal
decimal-scaled timed at each comparison scale its tier can hold (17, 28, 37, 152) across its widths — one line each, with a shaded min–max band; every fixed-precision peer is one diamond at its significant-digit capacity with a min–max whisker. Arithmetic is width-bound, so its scale-lines nearly overlap; transcendentals spread by precision.

div

decimal-scaled — median time per call at each comparison scale (· = the tier cannot hold that precision):

Width @17 prec @28 prec @37 prec @152 prec
D18 260 ns · · ·
D38 411 ns 1.27 µs 1.47 µs ·
D57 530 ns 651 ns 606 ns ·
D76 866 ns 872 ns 932 ns ·
D115 2.18 µs 2.23 µs 2.4 µs ·
D153 3.42 µs 3.31 µs 3.63 µs 4.87 µs
D230 5.75 µs 5.33 µs 6.21 µs 7.62 µs
D307 10.5 µs 9.36 µs 10.2 µs 12.9 µs
D462 22.4 µs 17.3 µs 20.7 µs 26.1 µs
D616 33.4 µs 26.2 µs 31.7 µs 41.2 µs
D924 63.2 µs 59.2 µs 70.3 µs 85.3 µs
D1232 107 µs 84.8 µs 96.7 µs 138 µs

peers (fixed precision; each timed beside the matching decimal-scaled line):

Peer Precision Median vs decimal-scaled
fastnum 154 1.4 µs 0.29× @152
decimal-rs 38 271 ns 0.18× @37
g_math 38 3.91 µs 2.7× @37
rust_decimal 28 110 ns 0.086× @28
10 ns100 ns1 µs10 µs100 µs1 ms10 ms183857761151532303074626169241232significant-digit width (log)decimal-scaled @17 precdecimal-scaled @28 precdecimal-scaled @37 precdecimal-scaled @152 precfastnumdecimal-rsg_mathrust_decimal
decimal-scaled timed at each comparison scale its tier can hold (17, 28, 37, 152) across its widths — one line each, with a shaded min–max band; every fixed-precision peer is one diamond at its significant-digit capacity with a min–max whisker. Arithmetic is width-bound, so its scale-lines nearly overlap; transcendentals spread by precision.

mul

decimal-scaled — median time per call at each comparison scale (· = the tier cannot hold that precision):

Width @17 prec @28 prec @37 prec @152 prec
D18 270 ns · · ·
D38 386 ns 541 ns 531 ns ·
D57 480 ns 586 ns 621 ns ·
D76 721 ns 882 ns 912 ns ·
D115 1.82 µs 2.12 µs 2.29 µs ·
D153 2.83 µs 3.17 µs 3.42 µs 5.24 µs
D230 4.73 µs 4.99 µs 6.01 µs 8.13 µs
D307 8.5 µs 8.45 µs 9.26 µs 13.4 µs
D462 16.7 µs 16.1 µs 18.2 µs 26 µs
D616 24.6 µs 23 µs 26.9 µs 38.1 µs
D924 50.9 µs 47 µs 57.5 µs 78.8 µs
D1232 79.9 µs 71.1 µs 84.9 µs 123 µs

peers (fixed precision; each timed beside the matching decimal-scaled line):

Peer Precision Median vs decimal-scaled
fastnum 154 200 ns 0.038× @152
decimal-rs 38 100 ns 0.19× @37
g_math 38 832 ns 1.6× @37
rust_decimal 28 60 ns 0.11× @28
10 ns100 ns1 µs10 µs100 µs1 ms10 ms100 ms183857761151532303074626169241232significant-digit width (log)decimal-scaled @17 precdecimal-scaled @28 precdecimal-scaled @37 precdecimal-scaled @152 precfastnumdecimal-rsg_mathrust_decimal
decimal-scaled timed at each comparison scale its tier can hold (17, 28, 37, 152) across its widths — one line each, with a shaded min–max band; every fixed-precision peer is one diamond at its significant-digit capacity with a min–max whisker. Arithmetic is width-bound, so its scale-lines nearly overlap; transcendentals spread by precision.

rem

decimal-scaled — median time per call at each comparison scale (· = the tier cannot hold that precision):

Width @17 prec @28 prec @37 prec @152 prec
D18 305 ns · · ·
D38 345 ns 496 ns 556 ns ·
D57 420 ns 571 ns 610 ns ·
D76 661 ns 856 ns 882 ns ·
D115 1.99 µs 2.08 µs 2.21 µs ·
D153 3.4 µs 3.27 µs 3.52 µs 4.56 µs
D230 5.26 µs 5.19 µs 5.97 µs 7.3 µs
D307 10.3 µs 8.54 µs 9.45 µs 12.4 µs
D462 21.7 µs 17.7 µs 20 µs 26.1 µs
D616 33.2 µs 28.3 µs 32.5 µs 39.2 µs
D924 66.5 µs 57.2 µs 62.9 µs 85.3 µs
D1232 101 µs 89.8 µs 95.4 µs 133 µs

peers (fixed precision; each timed beside the matching decimal-scaled line):

Peer Precision Median vs decimal-scaled
fastnum 154 270 ns 0.059× @152
decimal-rs 38 76 ns 0.14× @37
rust_decimal 28 124 ns 0.25× @28
10 ns100 ns1 µs10 µs100 µs1 ms10 ms183857761151532303074626169241232significant-digit width (log)decimal-scaled @17 precdecimal-scaled @28 precdecimal-scaled @37 precdecimal-scaled @152 precfastnumdecimal-rsrust_decimal
decimal-scaled timed at each comparison scale its tier can hold (17, 28, 37, 152) across its widths — one line each, with a shaded min–max band; every fixed-precision peer is one diamond at its significant-digit capacity with a min–max whisker. Arithmetic is width-bound, so its scale-lines nearly overlap; transcendentals spread by precision.

sub

decimal-scaled — median time per call at each comparison scale (· = the tier cannot hold that precision):

Width @17 prec @28 prec @37 prec @152 prec
D18 370 ns · · ·
D38 376 ns 511 ns 561 ns ·
D57 466 ns 631 ns 661 ns ·
D76 761 ns 992 ns 1.04 µs ·
D115 2.06 µs 2.47 µs 2.63 µs ·
D153 3.81 µs 3.86 µs 4.28 µs 5.35 µs
D230 6.18 µs 6.13 µs 7.26 µs 8.2 µs
D307 11.6 µs 10.3 µs 11.7 µs 14.9 µs
D462 23.4 µs 18.2 µs 21.5 µs 28.3 µs
D616 34.5 µs 28.4 µs 31.5 µs 42.1 µs
D924 69.1 µs 57.7 µs 65.4 µs 89.6 µs
D1232 120 µs 86.8 µs 101 µs 129 µs

peers (fixed precision; each timed beside the matching decimal-scaled line):

Peer Precision Median vs decimal-scaled
fastnum 154 110 ns 0.021× @152
decimal-rs 38 65 ns 0.12× @37
g_math 38 541 ns 0.96× @37
rust_decimal 28 80 ns 0.16× @28
10 ns100 ns1 µs10 µs100 µs1 ms10 ms100 ms183857761151532303074626169241232significant-digit width (log)decimal-scaled @17 precdecimal-scaled @28 precdecimal-scaled @37 precdecimal-scaled @152 precfastnumdecimal-rsg_mathrust_decimal
decimal-scaled timed at each comparison scale its tier can hold (17, 28, 37, 152) across its widths — one line each, with a shaded min–max band; every fixed-precision peer is one diamond at its significant-digit capacity with a min–max whisker. Arithmetic is width-bound, so its scale-lines nearly overlap; transcendentals spread by precision.