Uh oh!
There was an error while loading. Please reload this page.
perf/inline blake3 round - #557
Conversation
2b2a4fd to
1617d60Compare1f5a367 to
2b83e35Compare
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
3d03094Compare
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
69ce736Comparegabriel-barrett
commented
Aug 14, 2026
!benchmark aiur-recursive fresh |
gabriel-barrett
commented
Aug 14, 2026
!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
b6a4f22Comparegabriel-barrett
commented
Aug 14, 2026
!benchmark aiur-recursive fresh |
gabriel-barrett
commented
Aug 14, 2026
!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