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 |
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 |
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 |
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 |
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 |