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 | 426 ns | 501 ns | 551 ns | · |
| D57 | 601 ns | 771 ns | 791 ns | · |
| D76 | 741 ns | 932 ns | 957 ns | · |
| D115 | 2.07 µs | 2.56 µs | 2.72 µs | · |
| D153 | 3.09 µs | 3.22 µs | 4.21 µs | 3.96 µs |
| D230 | 7.93 µs | 7.37 µs | 8.14 µs | 9.93 µs |
| D307 | 11.3 µs | 9.94 µs | 11.3 µs | 14.2 µs |
| D462 | 21.3 µs | 18.8 µs | 21.2 µs | 27.7 µs |
| D616 | 36.2 µs | 28.4 µs | 31.3 µs | 42.5 µs |
| D924 | 57.1 µs | 45.5 µs | 50.1 µs | 67.4 µs |
| D1232 | 125 µs | 84.7 µs | 96.9 µs | 127 µs |
peers (fixed precision; each timed beside the matching decimal-scaled line):
| Peer | Precision | Median | vs decimal-scaled |
|---|---|---|---|
| fastnum | 154 | 101 ns | 0.026× @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 |
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 | 401 ns | 1.21 µs | 1.39 µs | · |
| D57 | 651 ns | 792 ns | 761 ns | · |
| D76 | 882 ns | 842 ns | 872 ns | · |
| D115 | 2.13 µs | 2.33 µs | 2.39 µs | · |
| D153 | 2.86 µs | 2.9 µs | 3.7 µs | 4.08 µs |
| D230 | 7.09 µs | 6.3 µs | 6.5 µs | 8.7 µs |
| D307 | 10.2 µs | 8.97 µs | 10.2 µs | 12.5 µs |
| D462 | 20.5 µs | 17.1 µs | 19.8 µs | 25.2 µs |
| D616 | 34.6 µs | 26.7 µs | 34.3 µs | 44.1 µs |
| D924 | 60 µs | 46.2 µs | 53.6 µs | 72.5 µs |
| D1232 | 112 µs | 85.3 µs | 102 µs | 135 µs |
peers (fixed precision; each timed beside the matching decimal-scaled line):
| Peer | Precision | Median | vs decimal-scaled |
|---|---|---|---|
| fastnum | 154 | 1.37 µs | 0.34× @152 |
| decimal-rs | 38 | 269 ns | 0.19× @37 |
| g_math | 38 | 3.42 µs | 2.5× @37 |
| rust_decimal | 28 | 110 ns | 0.091× @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 | 280 ns | · | · | · |
| D38 | 426 ns | 541 ns | 570 ns | · |
| D57 | 592 ns | 716 ns | 741 ns | · |
| D76 | 766 ns | 887 ns | 907 ns | · |
| D115 | 1.86 µs | 2.17 µs | 2.28 µs | · |
| D153 | 2.4 µs | 2.8 µs | 3.53 µs | 4.46 µs |
| D230 | 5.71 µs | 5.76 µs | 6.33 µs | 9.1 µs |
| D307 | 8.51 µs | 8.24 µs | 9.33 µs | 13.1 µs |
| D462 | 15.6 µs | 15.9 µs | 16.8 µs | 26.1 µs |
| D616 | 26.6 µs | 23.5 µs | 27.1 µs | 38.5 µs |
| D924 | 41.7 µs | 37.7 µs | 47.3 µs | 66 µs |
| D1232 | 77.6 µs | 68.2 µs | 85.4 µs | 120 µs |
peers (fixed precision; each timed beside the matching decimal-scaled line):
| Peer | Precision | Median | vs decimal-scaled |
|---|---|---|---|
| fastnum | 154 | 201 ns | 0.045× @152 |
| decimal-rs | 38 | 98 ns | 0.17× @37 |
| g_math | 38 | 806 ns | 1.4× @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 | 331 ns | · | · | · |
| D38 | 346 ns | 506 ns | 556 ns | · |
| D57 | 481 ns | 681 ns | 711 ns | · |
| D76 | 681 ns | 836 ns | 856 ns | · |
| D115 | 2 µs | 2.11 µs | 2.28 µs | · |
| D153 | 2.66 µs | 2.67 µs | 3.62 µs | 3.83 µs |
| D230 | 6.89 µs | 6.1 µs | 6.44 µs | 8.19 µs |
| D307 | 11.7 µs | 8.53 µs | 9.86 µs | 12.1 µs |
| D462 | 21.5 µs | 17.2 µs | 18.2 µs | 24.4 µs |
| D616 | 33 µs | 27.5 µs | 31.4 µs | 39.8 µs |
| D924 | 58.2 µs | 43.7 µs | 49.5 µs | 70.4 µs |
| D1232 | 111 µs | 86.6 µs | 101 µs | 129 µs |
peers (fixed precision; each timed beside the matching decimal-scaled line):
| Peer | Precision | Median | vs decimal-scaled |
|---|---|---|---|
| fastnum | 154 | 275 ns | 0.072× @152 |
| decimal-rs | 38 | 80 ns | 0.14× @37 |
| rust_decimal | 28 | 123 ns | 0.24× @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 | 340 ns | · | · | · |
| D38 | 381 ns | 511 ns | 566 ns | · |
| D57 | 546 ns | 772 ns | 776 ns | · |
| D76 | 761 ns | 991 ns | 1.01 µs | · |
| D115 | 1.68 µs | 2.55 µs | 2.74 µs | · |
| D153 | 3.11 µs | 3.21 µs | 4.28 µs | 3.81 µs |
| D230 | 7.67 µs | 7.42 µs | 8.05 µs | 9.99 µs |
| D307 | 11 µs | 10.2 µs | 11.3 µs | 14.2 µs |
| D462 | 22.7 µs | 18.8 µs | 20.1 µs | 28.8 µs |
| D616 | 36.1 µs | 29.3 µs | 31.6 µs | 42 µs |
| D924 | 57.7 µs | 43.6 µs | 49 µs | 68 µs |
| D1232 | 128 µs | 84.5 µs | 99.3 µs | 128 µs |
peers (fixed precision; each timed beside the matching decimal-scaled line):
| Peer | Precision | Median | vs decimal-scaled |
|---|---|---|---|
| fastnum | 154 | 115 ns | 0.03× @152 |
| decimal-rs | 38 | 60 ns | 0.11× @37 |
| g_math | 38 | 536 ns | 0.95× @37 |
| rust_decimal | 28 | 70 ns | 0.14× @28 |