perf/inline blake3 round - #557
Conversation
2b2a4fd to
1617d60
Compare
1f5a367 to
2b83e35
Compare
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
2b83e35 to
3d03094
Compare
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
This comment was marked as outdated.
d6f0857 to
69ce736
Compare
|
!benchmark aiur-recursive fresh |
|
!benchmark aiur fresh |
|
| constant | recursive-prove-time (main) | recursive-prove-time (PR) | Δ% | recursive-peak-ram (main) | recursive-peak-ram (PR) | Δ% | recursive-proof-size (main) | recursive-proof-size (PR) | Δ% | recursive-verify-time (main) | recursive-verify-time (PR) | Δ% | recursive-execute-time (main) | recursive-execute-time (PR) | Δ% | recursive-fft-cost (main) | recursive-fft-cost (PR) | Δ% | prove-time (main) | prove-time (PR) | Δ% | proof-size (main) | proof-size (PR) | Δ% | verify-time (main) | verify-time (PR) | Δ% | peak-ram (main) | peak-ram (PR) | Δ% |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
String.split |
35.764 s | 31.074 s | -13.1% (1.15× faster) 🟢 | 107.68 GiB | 81.50 GiB | -24.3% (1.32× smaller) 🟢 | 5.30 MiB | 6.27 MiB | +18.3% (1.18× larger) |
33.1 ms | 38.1 ms | +15.3% (1.15× slower) |
5.961 s | 4.727 s | -20.7% (1.26× faster) 🟢 | 180.38B | 143.49B | -20.5% (1.26× fewer) 🟢 | 15.713 s | 14.745 s | -6.2% (1.07× faster) 🟢 | 11.21 MiB | 12.14 MiB | +8.3% (1.08× larger) |
69.0 ms | 75.7 ms | +9.7% (1.10× slower) |
32.74 GiB | 29.83 GiB | -8.9% (1.10× smaller) 🟢 |
Vector.append |
32.628 s | 27.362 s | -16.1% (1.19× faster) 🟢 | 95.00 GiB | 73.59 GiB | -22.5% (1.29× smaller) 🟢 | 5.30 MiB | 6.23 MiB | +17.5% (1.18× larger) |
32.4 ms | 39.9 ms | +23.0% (1.23× slower) |
5.158 s | 4.255 s | -17.5% (1.21× faster) 🟢 | 157.02B | 128.00B | -18.5% (1.23× fewer) 🟢 | 3.885 s | 3.795 s | -2.3% | 10.42 MiB | 11.34 MiB | +8.9% (1.09× larger) |
65.7 ms | 69.1 ms | +5.1% (1.05× slower) |
6.80 GiB | 6.89 GiB | +1.4% |
Nat.add_comm |
21.106 s | 17.709 s | -16.1% (1.19× faster) 🟢 | 58.08 GiB | 44.38 GiB | -23.6% (1.31× smaller) 🟢 | 5.30 MiB | 6.23 MiB | +17.5% (1.18× larger) |
34.6 ms | 38.9 ms | +12.3% (1.12× slower) |
3.752 s | 3.105 s | -17.2% (1.21× faster) 🟢 | 113.85B | 92.75B | -18.5% (1.23× fewer) 🟢 | 1.024 s | 1.034 s | +1.0% | 8.93 MiB | 9.86 MiB | +10.4% (1.10× larger) |
52.6 ms | 60.8 ms | +15.7% (1.16× slower) |
3.79 GiB | 4.06 GiB | +7.0% (1.07× larger) |
|
| constant | prove-time (main) | prove-time (PR) | Δ% | throughput (const/s) (main) | throughput (const/s) (PR) | Δ% | peak-ram (main) | peak-ram (PR) | Δ% | execute-time (main) | execute-time (PR) | Δ% | verify-time (main) | verify-time (PR) | Δ% | proof-size (main) | proof-size (PR) | Δ% | fft-cost (main) | fft-cost (PR) | Δ% |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Array.extract_append |
39.589 s | 38.272 s | -3.3% 🟢 | 38.950 | 40.290 | +3.4% 🟢 | 73.66 GiB | 70.70 GiB | -4.0% 🟢 | 9.861 s | 9.625 s | -2.4% | 131.2 ms | 146.6 ms | +11.7% (1.12× slower) |
21.59 MiB | 23.38 MiB | +8.3% (1.08× larger) |
136.02B | 130.81B | -3.8% 🟢 |
ByteArray.utf8DecodeChar?_utf8EncodeChar_append |
38.143 s | 36.140 s | -5.2% (1.06× faster) 🟢 | 70.550 | 74.460 | +5.5% (1.06× faster) 🟢 | 73.09 GiB | 67.14 GiB | -8.1% (1.09× smaller) 🟢 | 9.759 s | 9.374 s | -3.9% 🟢 | 136.4 ms | 145.1 ms | +6.4% (1.06× slower) |
21.69 MiB | 23.47 MiB | +8.2% (1.08× larger) |
138.80B | 126.89B | -8.6% (1.09× fewer) 🟢 |
Char.ofOrdinal_le_of_le |
29.836 s | 29.502 s | -1.1% | 88.690 | 89.690 | +1.1% | 58.53 GiB | 58.49 GiB | -0.1% | 6.903 s | 6.630 s | -4.0% 🟢 | 137.5 ms | 201.3 ms | +46.4% (1.46× slower) |
21.64 MiB | 23.42 MiB | +8.3% (1.08× larger) |
99.42B | 90.63B | -8.8% (1.10× fewer) 🟢 |
Vector.extract_append._proof_2 |
21.860 s | 21.323 s | -2.5% | 59.560 | 61.060 | +2.5% | 39.70 GiB | 38.22 GiB | -3.7% 🟢 | 5.365 s | 5.263 s | -1.9% | 130.4 ms | 148.2 ms | +13.7% (1.14× slower) |
21.30 MiB | 23.08 MiB | +8.4% (1.08× larger) |
77.08B | 73.31B | -4.9% (1.05× fewer) 🟢 |
_private.Init.Data.Range.Polymorphic.SInt.0.Int64.instRxcHasSize_eq |
17.638 s | 16.652 s | -5.6% (1.06× faster) 🟢 | 102.740 | 108.810 | +5.9% (1.06× faster) 🟢 | 34.77 GiB | 31.77 GiB | -8.6% (1.09× smaller) 🟢 | 3.634 s | 3.537 s | -2.7% | 138.0 ms | 149.8 ms | +8.5% (1.09× slower) |
21.47 MiB | 23.26 MiB | +8.3% (1.08× larger) |
54.85B | 49.57B | -9.6% (1.11× fewer) 🟢 |
String.split |
16.598 s | 15.578 s | -6.1% (1.07× faster) 🟢 | 106.340 | 113.300 | +6.5% (1.07× faster) 🟢 | 32.71 GiB | 29.74 GiB | -9.1% (1.10× smaller) 🟢 | 3.376 s | 3.252 s | -3.7% 🟢 | 133.0 ms | 141.9 ms | +6.7% (1.07× slower) |
21.68 MiB | 23.46 MiB | +8.2% (1.08× larger) |
50.25B | 45.59B | -9.3% (1.10× fewer) 🟢 |
List.mergeSort |
12.202 s | 11.714 s | -4.0% 🟢 | 118.670 | 123.610 | +4.2% 🟢 | 23.77 GiB | 22.24 GiB | -6.4% (1.07× smaller) 🟢 | 2.438 s | 2.333 s | -4.3% 🟢 | 129.5 ms | 147.4 ms | +13.7% (1.14× slower) |
21.53 MiB | 23.32 MiB | +8.3% (1.08× larger) |
36.10B | 32.44B | -10.1% (1.11× fewer) 🟢 |
Vector.append |
3.968 s | 3.886 s | -2.1% | 122.230 | 124.810 | +2.1% | 6.69 GiB | 6.60 GiB | -1.3% | 684.6 ms | 653.3 ms | -4.6% 🟢 | 132.6 ms | 134.9 ms | +1.7% | 20.13 MiB | 21.92 MiB | +8.9% (1.09× larger) |
8.02B | 7.24B | -9.7% (1.11× fewer) 🟢 |
Nat.gcd_comm |
3.235 s | 3.104 s | -4.1% 🟢 | 120.550 | 125.640 | +4.2% 🟢 | 5.07 GiB | 5.78 GiB | +14.0% (1.14× larger) |
524.7 ms | 507.6 ms | -3.3% 🟢 | 123.7 ms | 133.3 ms | +7.8% (1.08× slower) |
19.90 MiB | 21.68 MiB | +9.0% (1.09× larger) |
5.25B | 4.60B | -12.4% (1.14× fewer) 🟢 |
String.append |
2.399 s | 2.299 s | -4.2% 🟢 | 126.740 | 132.250 | +4.3% 🟢 | 4.62 GiB | 4.64 GiB | +0.3% | 403.9 ms | 393.2 ms | -2.7% | 123.5 ms | 127.6 ms | +3.3% |
19.17 MiB | 20.96 MiB | +9.3% (1.09× larger) |
2.90B | 2.55B | -12.1% (1.14× fewer) 🟢 |
Int.gcd |
1.991 s | 2.001 s | +0.5% | 104.480 | 103.950 | -0.5% | 4.50 GiB | 4.53 GiB | +0.7% | 355.0 ms | 343.3 ms | -3.3% 🟢 | 118.2 ms | 129.5 ms | +9.5% (1.10× slower) |
18.73 MiB | 20.51 MiB | +9.5% (1.10× larger) |
1.87B | 1.64B | -11.9% (1.14× fewer) 🟢 |
Nat.sub_le_of_le_add |
1.815 s | 1.788 s | -1.5% | 93.650 | 95.090 | +1.5% | 4.60 GiB | 4.62 GiB | +0.3% | 343.9 ms | 333.7 ms | -2.9% | 113.8 ms | 128.4 ms | +12.8% (1.13× slower) |
19.08 MiB | 20.87 MiB | +9.4% (1.09× larger) |
1.60B | 1.42B | -11.5% (1.13× fewer) 🟢 |
Nat.add_comm |
1.011 s | 1.050 s | +3.9% |
41.550 | 40 | -3.7% |
3.54 GiB | 4.17 GiB | +17.7% (1.18× larger) |
255.5 ms | 251.9 ms | -1.4% | 106.7 ms | 116.6 ms | +9.3% (1.09× slower) |
17.25 MiB | 19.04 MiB | +10.4% (1.10× larger) |
271.37M | 249.57M | -8.0% (1.09× fewer) 🟢 |
Rebased onto the fused xor-rotation branch: the seven inline calls now compose with the two-operand u32_xor_rotr7/12 forms. Codegen regenerated and all 71 kernel FFT pins + the shard aggregate re-measured on top of the new base (median -5.4%, range -11.4%..-0.2%; shard 6.08B -> 5.21B, -14.4%). aiur (cargo + prove + cross), ixvm (pins + parity), multi-stark and recursive-verifier suites pass; fmt, clippy, deny clean.
69ce736 to
b6a4f22
Compare
|
!benchmark aiur-recursive fresh |
|
!benchmark aiur fresh |
|
| constant | recursive-prove-time (main) | recursive-prove-time (PR) | Δ% | recursive-peak-ram (main) | recursive-peak-ram (PR) | Δ% | recursive-proof-size (main) | recursive-proof-size (PR) | Δ% | recursive-verify-time (main) | recursive-verify-time (PR) | Δ% | recursive-execute-time (main) | recursive-execute-time (PR) | Δ% | recursive-fft-cost (main) | recursive-fft-cost (PR) | Δ% | prove-time (main) | prove-time (PR) | Δ% | proof-size (main) | proof-size (PR) | Δ% | verify-time (main) | verify-time (PR) | Δ% | peak-ram (main) | peak-ram (PR) | Δ% |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
String.split |
34.284 s | 31.716 s | -7.5% (1.08× faster) 🟢 | 102.25 GiB | 81.04 GiB | -20.7% (1.26× smaller) 🟢 | 5.27 MiB | 6.27 MiB | +18.9% (1.19× larger) |
34.7 ms | 37.9 ms | +9.2% (1.09× slower) |
5.645 s | 4.839 s | -14.3% (1.17× faster) 🟢 | 173.38B | 143.49B | -17.2% (1.21× fewer) 🟢 | 15.805 s | 15.068 s | -4.7% 🟢 | 11.19 MiB | 12.14 MiB | +8.5% (1.09× larger) |
68.0 ms | 75.8 ms | +11.6% (1.12× slower) |
32.25 GiB | 29.75 GiB | -7.7% (1.08× smaller) 🟢 |
Vector.append |
31.433 s | 28.063 s | -10.7% (1.12× faster) 🟢 | 90.02 GiB | 73.45 GiB | -18.4% (1.23× smaller) 🟢 | 5.27 MiB | 6.23 MiB | +18.1% (1.18× larger) |
32.5 ms | 37.4 ms | +15.3% (1.15× slower) |
4.991 s | 4.283 s | -14.2% (1.17× faster) 🟢 | 152.01B | 128.00B | -15.8% (1.19× fewer) 🟢 | 3.853 s | 3.825 s | -0.7% | 10.39 MiB | 11.34 MiB | +9.2% (1.09× larger) |
65.2 ms | 68.8 ms | +5.5% (1.06× slower) |
7.23 GiB | 6.34 GiB | -12.3% (1.14× smaller) 🟢 |
Nat.add_comm |
20.507 s | 17.985 s | -12.3% (1.14× faster) 🟢 | 55.58 GiB | 44.60 GiB | -19.8% (1.25× smaller) 🟢 | 5.27 MiB | 6.23 MiB | +18.1% (1.18× larger) |
34.9 ms | 38.4 ms | +10.2% (1.10× slower) |
3.591 s | 3.070 s | -14.5% (1.17× faster) 🟢 | 107.43B | 92.75B | -13.7% (1.16× fewer) 🟢 | 1.034 s | 1.031 s | -0.4% | 8.90 MiB | 9.86 MiB | +10.7% (1.11× larger) |
53.3 ms | 61.2 ms | +14.9% (1.15× slower) |
3.98 GiB | 3.56 GiB | -10.7% (1.12× smaller) 🟢 |
|
| constant | prove-time (main) | prove-time (PR) | Δ% | throughput (const/s) (main) | throughput (const/s) (PR) | Δ% | peak-ram (main) | peak-ram (PR) | Δ% | execute-time (main) | execute-time (PR) | Δ% | verify-time (main) | verify-time (PR) | Δ% | proof-size (main) | proof-size (PR) | Δ% | fft-cost (main) | fft-cost (PR) | Δ% |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Array.extract_append |
37.550 s | 37.412 s | -0.4% | 41.070 | 41.220 | +0.4% | 73.20 GiB | 70.64 GiB | -3.5% 🟢 | 9.577 s | 9.391 s | -1.9% | 138.9 ms | 151.1 ms | +8.8% (1.09× slower) |
21.54 MiB | 23.38 MiB | +8.5% (1.09× larger) |
135.19B | 130.81B | -3.2% 🟢 |
ByteArray.utf8DecodeChar?_utf8EncodeChar_append |
37.157 s | 34.546 s | -7.0% (1.08× faster) 🟢 | 72.420 | 77.900 | +7.6% (1.08× faster) 🟢 | 72.13 GiB | 67.22 GiB | -6.8% (1.07× smaller) 🟢 | 9.613 s | 9.122 s | -5.1% (1.05× faster) 🟢 | 197.0 ms | 148.7 ms | -24.5% (1.33× faster) 🟢 | 21.63 MiB | 23.47 MiB | +8.5% (1.09× larger) |
136.87B | 126.89B | -7.3% (1.08× fewer) 🟢 |
Char.ofOrdinal_le_of_le |
28.515 s | 28.454 s | -0.2% | 92.790 | 92.990 | +0.2% | 58.03 GiB | 58.51 GiB | +0.8% | 6.602 s | 6.421 s | -2.8% | 131.8 ms | 150.6 ms | +14.2% (1.14× slower) |
21.58 MiB | 23.42 MiB | +8.5% (1.09× larger) |
98.00B | 90.63B | -7.5% (1.08× fewer) 🟢 |
Vector.extract_append._proof_2 |
21.362 s | 20.460 s | -4.2% 🟢 | 60.950 | 63.640 | +4.4% 🟢 | 39.42 GiB | 38.21 GiB | -3.1% 🟢 | 5.182 s | 5.110 s | -1.4% | 128.2 ms | 152.2 ms | +18.7% (1.19× slower) |
21.24 MiB | 23.08 MiB | +8.7% (1.09× larger) |
76.48B | 73.31B | -4.1% 🟢 |
_private.Init.Data.Range.Polymorphic.SInt.0.Int64.instRxcHasSize_eq |
17.040 s | 15.965 s | -6.3% (1.07× faster) 🟢 | 106.340 | 113.500 | +6.7% (1.07× faster) 🟢 | 34.22 GiB | 31.82 GiB | -7.0% (1.08× smaller) 🟢 | 3.560 s | 3.361 s | -5.6% (1.06× faster) 🟢 | 134.9 ms | 143.8 ms | +6.6% (1.07× slower) |
21.42 MiB | 23.26 MiB | +8.6% (1.09× larger) |
54.00B | 49.57B | -8.2% (1.09× fewer) 🟢 |
String.split |
16.080 s | 15.024 s | -6.6% (1.07× faster) 🟢 | 109.770 | 117.480 | +7.0% (1.07× faster) 🟢 | 32.26 GiB | 29.72 GiB | -7.9% (1.09× smaller) 🟢 | 3.243 s | 3.158 s | -2.6% | 132.5 ms | 141.8 ms | +7.0% (1.07× slower) |
21.62 MiB | 23.46 MiB | +8.5% (1.09× larger) |
49.51B | 45.59B | -7.9% (1.09× fewer) 🟢 |
List.mergeSort |
11.944 s | 11.350 s | -5.0% (1.05× faster) 🟢 | 121.230 | 127.570 | +5.2% (1.05× faster) 🟢 | 23.52 GiB | 22.26 GiB | -5.4% (1.06× smaller) 🟢 | 2.435 s | 2.308 s | -5.2% (1.05× faster) 🟢 | 133.7 ms | 142.9 ms | +6.9% (1.07× slower) |
21.48 MiB | 23.32 MiB | +8.6% (1.09× larger) |
35.52B | 32.44B | -8.7% (1.09× fewer) 🟢 |
Vector.append |
3.982 s | 3.778 s | -5.1% (1.05× faster) 🟢 | 121.780 | 128.380 | +5.4% (1.05× faster) 🟢 | 7.11 GiB | 6.06 GiB | -14.8% (1.17× smaller) 🟢 | 666.1 ms | 647.1 ms | -2.8% | 135.2 ms | 131.0 ms | -3.1% 🟢 | 20.08 MiB | 21.92 MiB | +9.2% (1.09× larger) |
7.90B | 7.24B | -8.3% (1.09× fewer) 🟢 |
Nat.gcd_comm |
3.194 s | 3.051 s | -4.5% 🟢 | 122.110 | 127.830 | +4.7% 🟢 | 4.92 GiB | 4.81 GiB | -2.2% | 529.7 ms | 504.2 ms | -4.8% (1.05× faster) 🟢 | 122.8 ms | 131.9 ms | +7.4% (1.07× slower) |
19.84 MiB | 21.68 MiB | +9.3% (1.09× larger) |
5.15B | 4.60B | -10.7% (1.12× fewer) 🟢 |
String.append |
2.339 s | 2.245 s | -4.0% 🟢 | 129.970 | 135.390 | +4.2% 🟢 | 4.63 GiB | 4.79 GiB | +3.5% |
400.3 ms | 382.6 ms | -4.4% 🟢 | 120.4 ms | 127.3 ms | +5.7% (1.06× slower) |
19.12 MiB | 20.96 MiB | +9.6% (1.10× larger) |
2.85B | 2.55B | -10.5% (1.12× fewer) 🟢 |
Int.gcd |
1.991 s | 1.956 s | -1.8% | 104.490 | 106.350 | +1.8% | 5.40 GiB | 4.53 GiB | -16.2% (1.19× smaller) 🟢 | 342.9 ms | 340.7 ms | -0.6% | 113.8 ms | 127.5 ms | +12.0% (1.12× slower) |
18.67 MiB | 20.51 MiB | +9.9% (1.10× larger) |
1.83B | 1.64B | -10.3% (1.12× fewer) 🟢 |
Nat.sub_le_of_le_add |
1.788 s | 1.741 s | -2.7% | 95.060 | 97.660 | +2.7% | 4.42 GiB | 4.61 GiB | +4.3% |
337.3 ms | 333.3 ms | -1.2% | 113.0 ms | 128.9 ms | +14.1% (1.14× slower) |
19.03 MiB | 20.87 MiB | +9.7% (1.10× larger) |
1.58B | 1.42B | -10.0% (1.11× fewer) 🟢 |
Nat.add_comm |
1.019 s | 1.084 s | +6.3% (1.06× slower) |
41.200 | 38.740 | -6.0% (1.06× slower) |
4.17 GiB | 3.49 GiB | -16.4% (1.20× smaller) 🟢 | 245.4 ms | 246.5 ms | +0.4% | 107.8 ms | 115.9 ms | +7.4% (1.07× slower) |
17.20 MiB | 19.04 MiB | +10.7% (1.11× larger) |
268.28M | 249.57M | -7.0% (1.07× fewer) 🟢 |
Inline
blake3_compress_inner_j. This has the effect of increasing the total width, though not at the same proportion as what we gain on efficiency, for the lookup itself is costly, especially when the input arguments are big.Eventually we will have to decrease the proof size of the recursive verifier, but there are ways around it see #551