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 | 330 ns | · | · | · |
| D38 | 395 ns | 520 ns | 561 ns | · |
| D57 | 616 ns | 821 ns | 836 ns | · |
| D76 | 772 ns | 1 µs | 1 µs | · |
| D115 | 2.14 µs | 2.62 µs | 2.82 µs | · |
| D153 | 3.8 µs | 3.89 µs | 4.22 µs | 4.96 µs |
| D230 | 8.08 µs | 8.21 µs | 8.19 µs | 10.4 µs |
| D307 | 13.3 µs | 11.1 µs | 12.2 µs | 15.1 µs |
| D462 | 24.6 µs | 19.5 µs | 23.3 µs | 31.1 µs |
| D616 | 41.6 µs | 32.7 µs | 34.7 µs | 47.2 µs |
| D924 | 75.7 µs | 58.4 µs | 66.2 µs | 90.5 µs |
| D1232 | 114 µs | 89.8 µs | 105 µs | 148 µs |
peers (fixed precision; each timed beside the matching decimal-scaled line):
| Peer | Precision | Median | vs decimal-scaled |
|---|---|---|---|
| fastnum | 154 | 100 ns | 0.02× @152 |
| decimal-rs | 38 | 60 ns | 0.11× @37 |
| g_math | 38 | 526 ns | 0.94× @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 | 250 ns | · | · | · |
| D38 | 420 ns | 1.28 µs | 1.5 µs | · |
| D57 | 631 ns | 816 ns | 781 ns | · |
| D76 | 856 ns | 911 ns | 932 ns | · |
| D115 | 2.31 µs | 2.31 µs | 2.51 µs | · |
| D153 | 3.25 µs | 3.31 µs | 3.65 µs | 4.77 µs |
| D230 | 7.25 µs | 6.71 µs | 6.85 µs | 8.83 µs |
| D307 | 10.5 µs | 9.61 µs | 11.2 µs | 13.9 µs |
| D462 | 23.4 µs | 18.5 µs | 19.9 µs | 27.3 µs |
| D616 | 41.6 µs | 31.8 µs | 32.3 µs | 44.9 µs |
| D924 | 67.7 µs | 58.4 µs | 64.1 µs | 84.8 µs |
| D1232 | 116 µs | 92.9 µs | 103 µs | 143 µs |
peers (fixed precision; each timed beside the matching decimal-scaled line):
| Peer | Precision | Median | vs decimal-scaled |
|---|---|---|---|
| fastnum | 154 | 1.43 µs | 0.3× @152 |
| decimal-rs | 38 | 281 ns | 0.19× @37 |
| g_math | 38 | 4.09 µs | 2.7× @37 |
| rust_decimal | 28 | 120 ns | 0.094× @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 | 281 ns | · | · | · |
| D38 | 406 ns | 541 ns | 550 ns | · |
| D57 | 606 ns | 721 ns | 782 ns | · |
| D76 | 766 ns | 912 ns | 952 ns | · |
| D115 | 1.94 µs | 2.19 µs | 2.35 µs | · |
| D153 | 2.8 µs | 3.1 µs | 3.44 µs | 5.19 µs |
| D230 | 5.67 µs | 6.54 µs | 6.67 µs | 9.57 µs |
| D307 | 8.91 µs | 8.78 µs | 9.87 µs | 14.2 µs |
| D462 | 16.7 µs | 16.3 µs | 18.9 µs | 27.1 µs |
| D616 | 25 µs | 24.7 µs | 29.1 µs | 41 µs |
| D924 | 52 µs | 47.1 µs | 53.9 µs | 81.3 µs |
| D1232 | 79.4 µs | 75.1 µs | 90.1 µs | 132 µs |
peers (fixed precision; each timed beside the matching decimal-scaled line):
| Peer | Precision | Median | vs decimal-scaled |
|---|---|---|---|
| fastnum | 154 | 200 ns | 0.039× @152 |
| decimal-rs | 38 | 106 ns | 0.19× @37 |
| g_math | 38 | 806 ns | 1.5× @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 | 316 ns | · | · | · |
| D38 | 346 ns | 491 ns | 566 ns | · |
| D57 | 526 ns | 701 ns | 762 ns | · |
| D76 | 722 ns | 886 ns | 916 ns | · |
| D115 | 2.11 µs | 2.17 µs | 2.33 µs | · |
| D153 | 3.14 µs | 3.13 µs | 3.45 µs | 4.52 µs |
| D230 | 7.22 µs | 6.46 µs | 6.68 µs | 8.68 µs |
| D307 | 11.3 µs | 9.45 µs | 10.3 µs | 12.9 µs |
| D462 | 24.6 µs | 19.5 µs | 20.6 µs | 25.7 µs |
| D616 | 36.5 µs | 29 µs | 33.2 µs | 44 µs |
| D924 | 72.5 µs | 57.8 µs | 61.8 µs | 88.9 µs |
| D1232 | 104 µs | 94 µs | 110 µs | 134 µs |
peers (fixed precision; each timed beside the matching decimal-scaled line):
| Peer | Precision | Median | vs decimal-scaled |
|---|---|---|---|
| fastnum | 154 | 261 ns | 0.058× @152 |
| decimal-rs | 38 | 80 ns | 0.14× @37 |
| rust_decimal | 28 | 121 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 | 360 ns | · | · | · |
| D38 | 395 ns | 501 ns | 556 ns | · |
| D57 | 591 ns | 801 ns | 816 ns | · |
| D76 | 772 ns | 1.01 µs | 1.08 µs | · |
| D115 | 2.05 µs | 2.62 µs | 2.81 µs | · |
| D153 | 3.79 µs | 3.89 µs | 4.25 µs | 4.52 µs |
| D230 | 8.53 µs | 8.2 µs | 8.26 µs | 10.3 µs |
| D307 | 12.5 µs | 10.9 µs | 12.1 µs | 15.8 µs |
| D462 | 26 µs | 20.6 µs | 22.9 µs | 28.9 µs |
| D616 | 39.8 µs | 29.8 µs | 34.8 µs | 47.2 µs |
| D924 | 71.8 µs | 57.7 µs | 66.1 µs | 88.7 µs |
| D1232 | 121 µs | 95.5 µs | 104 µs | 140 µs |
peers (fixed precision; each timed beside the matching decimal-scaled line):
| Peer | Precision | Median | vs decimal-scaled |
|---|---|---|---|
| fastnum | 154 | 110 ns | 0.024× @152 |
| decimal-rs | 38 | 60 ns | 0.11× @37 |
| g_math | 38 | 526 ns | 0.95× @37 |
| rust_decimal | 28 | 70 ns | 0.14× @28 |