plutus icon indicating copy to clipboard operation
plutus copied to clipboard

[Builtins] Allow casing on booleans and integers

Open effectfully opened this issue 8 months ago • 37 comments

This adds support for casing on booleans and integers using Case, which is the first part of #6602.

effectfully avatar Apr 10 '25 13:04 effectfully

/benchmark nofib

effectfully avatar Apr 11 '25 00:04 effectfully

/benchmark nofib

effectfully avatar Apr 11 '25 00:04 effectfully

/benchmark lists

effectfully avatar Apr 11 '25 00:04 effectfully

/benchmark lists

effectfully avatar Apr 11 '25 00:04 effectfully

Click here to check the status of your benchmark.

github-actions[bot] avatar Apr 11 '25 00:04 github-actions[bot]

Comparing benchmark results of 'nofib' on '27d2bc3905' (base) and 'c0df0c158b' (PR)

Results table
Script 27d2bc3 c0df0c1 Change
clausify/formula1 2.170 ms 2.076 ms -4.3%
clausify/formula2 2.920 ms 2.781 ms -4.8%
clausify/formula3 8.083 ms 7.722 ms -4.5%
clausify/formula4 17.54 ms 15.77 ms -10.1%
clausify/formula5 39.41 ms 37.72 ms -4.3%
knights/4x4 14.83 ms 12.75 ms -14.0%
knights/6x6 36.46 ms 30.90 ms -15.2%
knights/8x8 63.35 ms 53.63 ms -15.3%
primetest/05digits 8.958 ms 7.917 ms -11.6%
primetest/10digits 17.63 ms 15.46 ms -12.3%
primetest/30digits 54.52 ms 48.51 ms -11.0%
primetest/50digits 89.72 ms 81.07 ms -9.6%
queens4x4/bt 4.102 ms 3.695 ms -9.9%
queens4x4/bm 5.038 ms 4.674 ms -7.2%
queens4x4/bjbt1 4.899 ms 4.434 ms -9.5%
queens4x4/bjbt2 4.620 ms 4.155 ms -10.1%
queens4x4/fc 10.09 ms 9.234 ms -8.5%
queens5x5/bt 57.19 ms 50.59 ms -11.5%
queens5x5/bm 57.94 ms 53.51 ms -7.6%
queens5x5/bjbt1 66.18 ms 58.87 ms -11.0%
queens5x5/bjbt2 64.42 ms 56.83 ms -11.8%
queens5x5/fc 128.3 ms 116.3 ms -9.4%
27d2bc3 c0df0c1 Change
TOTAL 758.4 ms 678.6 ms -10.5%

github-actions[bot] avatar Apr 11 '25 01:04 github-actions[bot]

Click here to check the status of your benchmark.

github-actions[bot] avatar Apr 11 '25 01:04 github-actions[bot]

Comparing benchmark results of 'nofib' on '27d2bc3905' (base) and 'c0df0c158b' (PR)

Results table
Script 27d2bc3 c0df0c1 Change
clausify/formula1 2.166 ms 2.087 ms -3.6%
clausify/formula2 2.938 ms 2.805 ms -4.5%
clausify/formula3 8.124 ms 7.760 ms -4.5%
clausify/formula4 17.62 ms 15.82 ms -10.2%
clausify/formula5 39.61 ms 37.70 ms -4.8%
knights/4x4 14.80 ms 12.85 ms -13.2%
knights/6x6 36.39 ms 30.89 ms -15.1%
knights/8x8 63.15 ms 53.57 ms -15.2%
primetest/05digits 8.955 ms 7.963 ms -11.1%
primetest/10digits 17.64 ms 15.65 ms -11.3%
primetest/30digits 56.05 ms 48.66 ms -13.2%
primetest/50digits 93.60 ms 81.50 ms -12.9%
queens4x4/bt 4.107 ms 3.728 ms -9.2%
queens4x4/bm 5.039 ms 4.691 ms -6.9%
queens4x4/bjbt1 4.913 ms 4.403 ms -10.4%
queens4x4/bjbt2 4.626 ms 4.171 ms -9.8%
queens4x4/fc 10.09 ms 9.257 ms -8.3%
queens5x5/bt 57.20 ms 50.61 ms -11.5%
queens5x5/bm 57.91 ms 53.43 ms -7.7%
queens5x5/bjbt1 66.11 ms 59.00 ms -10.8%
queens5x5/bjbt2 64.38 ms 56.64 ms -12.0%
queens5x5/fc 128.3 ms 116.1 ms -9.5%
27d2bc3 c0df0c1 Change
TOTAL 763.7 ms 679.3 ms -11.1%

github-actions[bot] avatar Apr 11 '25 02:04 github-actions[bot]

Click here to check the status of your benchmark.

github-actions[bot] avatar Apr 11 '25 02:04 github-actions[bot]

Comparing benchmark results of 'lists' on '27d2bc3905' (base) and 'c0df0c158b' (PR)

Results table
Script 27d2bc3 c0df0c1 Change
sort/ghcSort/50 179.4 μs 149.0 μs -16.9%
sort/ghcSort/100 416.6 μs 343.6 μs -17.5%
sort/ghcSort/150 717.7 μs 593.0 μs -17.4%
sort/ghcSort/200 966.7 μs 793.8 μs -17.9%
sort/ghcSort/250 1.249 ms 1.031 ms -17.5%
sort/ghcSort/300 1.646 ms 1.354 ms -17.7%
sort/insertionSort/50 615.3 μs 481.1 μs -21.8%
sort/insertionSort/100 2.452 ms 1.910 ms -22.1%
sort/insertionSort/150 5.524 ms 4.284 ms -22.4%
sort/insertionSort/200 9.831 ms 7.630 ms -22.4%
sort/insertionSort/250 15.41 ms 11.98 ms -22.3%
sort/insertionSort/300 22.27 ms 17.28 ms -22.4%
sort/mergeSort/50 542.2 μs 463.8 μs -14.5%
sort/mergeSort/100 1.253 ms 1.064 ms -15.1%
sort/mergeSort/150 2.013 ms 1.709 ms -15.1%
sort/mergeSort/200 2.855 ms 2.408 ms -15.7%
sort/mergeSort/250 3.702 ms 3.157 ms -14.7%
sort/mergeSort/300 4.510 ms 3.829 ms -15.1%
sort/quickSort/50 1.418 ms 1.095 ms -22.8%
sort/quickSort/100 5.869 ms 4.640 ms -20.9%
sort/quickSort/150 13.18 ms 10.41 ms -21.0%
sort/quickSort/200 23.33 ms 18.41 ms -21.1%
sort/quickSort/250 36.76 ms 29.08 ms -20.9%
sort/quickSort/300 52.82 ms 42.05 ms -20.4%
sum/compiled-from-Haskell/sum-right-builtin/100 77.94 μs 78.40 μs +0.6%
sum/compiled-from-Haskell/sum-right-builtin/500 409.1 μs 410.7 μs +0.4%
sum/compiled-from-Haskell/sum-right-builtin/1000 865.4 μs 871.9 μs +0.8%
sum/compiled-from-Haskell/sum-right-builtin/2500 2.665 ms 2.690 ms +0.9%
sum/compiled-from-Haskell/sum-right-builtin/5000 5.764 ms 5.804 ms +0.7%
sum/compiled-from-Haskell/sum-right-Scott/100 43.86 μs 44.62 μs +1.7%
sum/compiled-from-Haskell/sum-right-Scott/500 232.8 μs 234.0 μs +0.5%
sum/compiled-from-Haskell/sum-right-Scott/1000 494.8 μs 504.5 μs +2.0%
sum/compiled-from-Haskell/sum-right-Scott/2500 1.725 ms 1.738 ms +0.8%
sum/compiled-from-Haskell/sum-right-Scott/5000 4.168 ms 4.191 ms +0.6%
sum/compiled-from-Haskell/sum-right-data/100 255.9 μs 215.3 μs -15.9%
sum/compiled-from-Haskell/sum-right-data/500 1.407 ms 1.173 ms -16.6%
sum/compiled-from-Haskell/sum-right-data/1000 3.270 ms 2.701 ms -17.4%
sum/compiled-from-Haskell/sum-right-data/2500 8.443 ms 7.444 ms -11.8%
sum/compiled-from-Haskell/sum-right-data/5000 18.05 ms 15.81 ms -12.4%
sum/compiled-from-Haskell/sum-left-builtin/100 75.87 μs 76.84 μs +1.3%
sum/compiled-from-Haskell/sum-left-builtin/500 396.0 μs 400.8 μs +1.2%
sum/compiled-from-Haskell/sum-left-builtin/1000 848.9 μs 859.0 μs +1.2%
sum/compiled-from-Haskell/sum-left-builtin/2500 2.596 ms 2.626 ms +1.2%
sum/compiled-from-Haskell/sum-left-builtin/5000 5.730 ms 5.788 ms +1.0%
sum/compiled-from-Haskell/sum-left-Scott/100 42.72 μs 43.96 μs +2.9%
sum/compiled-from-Haskell/sum-left-Scott/500 228.7 μs 231.1 μs +1.0%
sum/compiled-from-Haskell/sum-left-Scott/1000 495.1 μs 505.6 μs +2.1%
sum/compiled-from-Haskell/sum-left-Scott/2500 1.629 ms 1.656 ms +1.7%
sum/compiled-from-Haskell/sum-left-Scott/5000 4.072 ms 4.144 ms +1.8%
sum/compiled-from-Haskell/sum-left-data/100 260.4 μs 236.8 μs -9.1%
sum/compiled-from-Haskell/sum-left-data/500 1.433 ms 1.294 ms -9.7%
sum/compiled-from-Haskell/sum-left-data/1000 3.246 ms 2.915 ms -10.2%
sum/compiled-from-Haskell/sum-left-data/2500 8.609 ms 7.845 ms -8.9%
sum/compiled-from-Haskell/sum-left-data/5000 18.35 ms 16.75 ms -8.7%
sum/hand-written-PLC/sum-right-builtin/100 52.08 μs 53.60 μs +2.9%
sum/hand-written-PLC/sum-right-builtin/500 262.7 μs 274.4 μs +4.5%
sum/hand-written-PLC/sum-right-builtin/1000 548.2 μs 566.6 μs +3.4%
sum/hand-written-PLC/sum-right-builtin/2500 1.582 ms 1.634 ms +3.3%
sum/hand-written-PLC/sum-right-builtin/5000 3.510 ms 3.617 ms +3.0%
sum/hand-written-PLC/sum-right-Scott/100 34.63 μs 34.80 μs +0.5%
sum/hand-written-PLC/sum-right-Scott/500 181.6 μs 185.9 μs +2.4%
sum/hand-written-PLC/sum-right-Scott/1000 406.7 μs 412.6 μs +1.5%
sum/hand-written-PLC/sum-right-Scott/2500 1.365 ms 1.371 ms +0.4%
sum/hand-written-PLC/sum-right-Scott/5000 4.126 ms 4.098 ms -0.7%
sum/hand-written-PLC/sum-left-builtin/100 56.56 μs 57.16 μs +1.1%
sum/hand-written-PLC/sum-left-builtin/500 280.2 μs 282.8 μs +0.9%
sum/hand-written-PLC/sum-left-builtin/1000 559.2 μs 560.1 μs +0.2%
sum/hand-written-PLC/sum-left-builtin/2500 1.391 ms 1.398 ms +0.5%
sum/hand-written-PLC/sum-left-builtin/5000 2.755 ms 2.777 ms +0.8%
sum/hand-written-PLC/sum-left-Scott/100 38.73 μs 38.76 μs +0.1%
sum/hand-written-PLC/sum-left-Scott/500 206.8 μs 211.9 μs +2.5%
sum/hand-written-PLC/sum-left-Scott/1000 462.1 μs 465.3 μs +0.7%
sum/hand-written-PLC/sum-left-Scott/2500 1.592 ms 1.599 ms +0.4%
sum/hand-written-PLC/sum-left-Scott/5000 4.448 ms 4.449 ms +0.0%
27d2bc3 c0df0c1 Change
TOTAL 329.3 ms 279.5 ms -15.1%

github-actions[bot] avatar Apr 11 '25 03:04 github-actions[bot]

Click here to check the status of your benchmark.

github-actions[bot] avatar Apr 11 '25 03:04 github-actions[bot]

Comparing benchmark results of 'lists' on '27d2bc3905' (base) and 'c0df0c158b' (PR)

Results table
Script 27d2bc3 c0df0c1 Change
sort/ghcSort/50 178.2 μs 145.7 μs -18.2%
sort/ghcSort/100 413.2 μs 335.3 μs -18.9%
sort/ghcSort/150 712.0 μs 577.6 μs -18.9%
sort/ghcSort/200 957.7 μs 771.1 μs -19.5%
sort/ghcSort/250 1.237 ms 1.002 ms -19.0%
sort/ghcSort/300 1.628 ms 1.318 ms -19.0%
sort/insertionSort/50 607.9 μs 463.0 μs -23.8%
sort/insertionSort/100 2.426 ms 1.845 ms -23.9%
sort/insertionSort/150 5.458 ms 4.132 ms -24.3%
sort/insertionSort/200 9.704 ms 7.366 ms -24.1%
sort/insertionSort/250 15.23 ms 11.55 ms -24.2%
sort/insertionSort/300 21.99 ms 16.69 ms -24.1%
sort/mergeSort/50 540.0 μs 454.2 μs -15.9%
sort/mergeSort/100 1.238 ms 1.042 ms -15.8%
sort/mergeSort/150 1.991 ms 1.668 ms -16.2%
sort/mergeSort/200 2.797 ms 2.355 ms -15.8%
sort/mergeSort/250 3.665 ms 3.089 ms -15.7%
sort/mergeSort/300 4.456 ms 3.759 ms -15.6%
sort/quickSort/50 1.407 ms 1.085 ms -22.9%
sort/quickSort/100 5.825 ms 4.593 ms -21.2%
sort/quickSort/150 13.08 ms 10.30 ms -21.3%
sort/quickSort/200 23.17 ms 18.34 ms -20.8%
sort/quickSort/250 36.49 ms 28.76 ms -21.2%
sort/quickSort/300 52.37 ms 41.55 ms -20.7%
sum/compiled-from-Haskell/sum-right-builtin/100 77.00 μs 77.53 μs +0.7%
sum/compiled-from-Haskell/sum-right-builtin/500 402.9 μs 406.0 μs +0.8%
sum/compiled-from-Haskell/sum-right-builtin/1000 858.2 μs 864.8 μs +0.8%
sum/compiled-from-Haskell/sum-right-builtin/2500 2.642 ms 2.666 ms +0.9%
sum/compiled-from-Haskell/sum-right-builtin/5000 5.710 ms 5.758 ms +0.8%
sum/compiled-from-Haskell/sum-right-Scott/100 43.41 μs 44.23 μs +1.9%
sum/compiled-from-Haskell/sum-right-Scott/500 230.7 μs 232.4 μs +0.7%
sum/compiled-from-Haskell/sum-right-Scott/1000 489.2 μs 498.7 μs +1.9%
sum/compiled-from-Haskell/sum-right-Scott/2500 1.713 ms 1.730 ms +1.0%
sum/compiled-from-Haskell/sum-right-Scott/5000 4.133 ms 4.160 ms +0.7%
sum/compiled-from-Haskell/sum-right-data/100 253.0 μs 213.0 μs -15.8%
sum/compiled-from-Haskell/sum-right-data/500 1.393 ms 1.159 ms -16.8%
sum/compiled-from-Haskell/sum-right-data/1000 3.170 ms 2.673 ms -15.7%
sum/compiled-from-Haskell/sum-right-data/2500 8.376 ms 7.367 ms -12.0%
sum/compiled-from-Haskell/sum-right-data/5000 17.85 ms 15.61 ms -12.5%
sum/compiled-from-Haskell/sum-left-builtin/100 74.85 μs 76.17 μs +1.8%
sum/compiled-from-Haskell/sum-left-builtin/500 390.2 μs 394.6 μs +1.1%
sum/compiled-from-Haskell/sum-left-builtin/1000 837.4 μs 848.8 μs +1.4%
sum/compiled-from-Haskell/sum-left-builtin/2500 2.569 ms 2.596 ms +1.1%
sum/compiled-from-Haskell/sum-left-builtin/5000 5.661 ms 5.725 ms +1.1%
sum/compiled-from-Haskell/sum-left-Scott/100 42.22 μs 43.38 μs +2.7%
sum/compiled-from-Haskell/sum-left-Scott/500 223.3 μs 228.4 μs +2.3%
sum/compiled-from-Haskell/sum-left-Scott/1000 490.2 μs 499.6 μs +1.9%
sum/compiled-from-Haskell/sum-left-Scott/2500 1.618 ms 1.637 ms +1.2%
sum/compiled-from-Haskell/sum-left-Scott/5000 4.024 ms 4.092 ms +1.7%
sum/compiled-from-Haskell/sum-left-data/100 256.9 μs 232.9 μs -9.3%
sum/compiled-from-Haskell/sum-left-data/500 1.420 ms 1.282 ms -9.7%
sum/compiled-from-Haskell/sum-left-data/1000 3.199 ms 2.889 ms -9.7%
sum/compiled-from-Haskell/sum-left-data/2500 8.522 ms 7.773 ms -8.8%
sum/compiled-from-Haskell/sum-left-data/5000 18.10 ms 16.59 ms -8.3%
sum/hand-written-PLC/sum-right-builtin/100 52.25 μs 53.82 μs +3.0%
sum/hand-written-PLC/sum-right-builtin/500 262.3 μs 270.4 μs +3.1%
sum/hand-written-PLC/sum-right-builtin/1000 538.7 μs 559.6 μs +3.9%
sum/hand-written-PLC/sum-right-builtin/2500 1.572 ms 1.618 ms +2.9%
sum/hand-written-PLC/sum-right-builtin/5000 3.484 ms 3.567 ms +2.4%
sum/hand-written-PLC/sum-right-Scott/100 34.26 μs 34.56 μs +0.9%
sum/hand-written-PLC/sum-right-Scott/500 180.2 μs 184.3 μs +2.3%
sum/hand-written-PLC/sum-right-Scott/1000 403.0 μs 408.7 μs +1.4%
sum/hand-written-PLC/sum-right-Scott/2500 1.356 ms 1.360 ms +0.3%
sum/hand-written-PLC/sum-right-Scott/5000 4.088 ms 4.103 ms +0.4%
sum/hand-written-PLC/sum-left-builtin/100 55.40 μs 57.21 μs +3.3%
sum/hand-written-PLC/sum-left-builtin/500 274.7 μs 280.7 μs +2.2%
sum/hand-written-PLC/sum-left-builtin/1000 547.1 μs 557.6 μs +1.9%
sum/hand-written-PLC/sum-left-builtin/2500 1.363 ms 1.387 ms +1.8%
sum/hand-written-PLC/sum-left-builtin/5000 2.714 ms 2.760 ms +1.7%
sum/hand-written-PLC/sum-left-Scott/100 37.67 μs 38.47 μs +2.1%
sum/hand-written-PLC/sum-left-Scott/500 205.9 μs 210.8 μs +2.4%
sum/hand-written-PLC/sum-left-Scott/1000 456.2 μs 466.3 μs +2.2%
sum/hand-written-PLC/sum-left-Scott/2500 1.578 ms 1.594 ms +1.0%
sum/hand-written-PLC/sum-left-Scott/5000 4.401 ms 4.446 ms +1.0%
27d2bc3 c0df0c1 Change
TOTAL 325.9 ms 275.5 ms -15.5%

github-actions[bot] avatar Apr 11 '25 04:04 github-actions[bot]

The simplest solution is perhaps adding a BCaseBuiltin step with infinite budget. Or alternatively, introduce a new plutus core versoin (1.2.0) and make the CEK machine aware of the version, but that's a bigger change and may have performance overhead.

zliu41 avatar May 31 '25 09:05 zliu41

Well this seems quite tricky. We need to put this on hold until we find an acceptable solution.

zliu41 avatar May 31 '25 10:05 zliu41

This is a non-backwards-compatible change to the behaviour of a core expression type, so it's pretty tricky indeed. Possibly we need separate Case and Case2 nodes and we deserialise new case expressions into the latter. From the point of view of the evaluator, it needs to support both behaviours and it needs to distinguish them. We don't have a way to plug in evaluators like we do for builtins, so otherwise I guess we'd need to add something like that (and be very careful about performance).

michaelpj avatar Jun 03 '25 07:06 michaelpj

@michaelpj @zliu41

otherwise I guess we'd need to add something like that (and be very careful about performance).

Added in 5f3483866477eee84e04ccc81147a39eacdddc47, please review.

(not complete, some builds and tests fail, but it's enough to run the benchmarks)

effectfully avatar Jun 05 '25 04:06 effectfully

/benchmark nofib

effectfully avatar Jun 05 '25 04:06 effectfully

/benchmark nofib

effectfully avatar Jun 05 '25 04:06 effectfully

/benchmark nofib

effectfully avatar Jun 05 '25 04:06 effectfully

/benchmark lists

effectfully avatar Jun 05 '25 04:06 effectfully

/benchmark lists

effectfully avatar Jun 05 '25 04:06 effectfully

/benchmark lists

effectfully avatar Jun 05 '25 04:06 effectfully

Click here to check the status of your benchmark.

github-actions[bot] avatar Jun 05 '25 04:06 github-actions[bot]

Comparing benchmark results of 'nofib' on '40b3e8c4d' (base) and '5f3483866' (PR)

Results table
Script 40b3e8c 5f34838 Change
clausify/formula1 2.245 ms 2.097 ms -6.6%
clausify/formula2 3.023 ms 2.806 ms -7.2%
clausify/formula3 8.351 ms 7.762 ms -7.1%
clausify/formula4 17.80 ms 15.95 ms -10.4%
clausify/formula5 40.62 ms 37.44 ms -7.8%
knights/4x4 15.28 ms 12.94 ms -15.3%
knights/6x6 36.36 ms 31.26 ms -14.0%
knights/8x8 63.21 ms 54.16 ms -14.3%
primetest/05digits 5.462 ms 4.828 ms -11.6%
primetest/10digits 10.78 ms 9.512 ms -11.8%
primetest/30digits 31.47 ms 28.11 ms -10.7%
primetest/50digits 50.62 ms 45.95 ms -9.2%
queens4x4/bt 4.166 ms 3.709 ms -11.0%
queens4x4/bm 5.186 ms 4.729 ms -8.8%
queens4x4/bjbt1 4.963 ms 4.472 ms -9.9%
queens4x4/bjbt2 4.690 ms 4.187 ms -10.7%
queens4x4/fc 10.19 ms 9.333 ms -8.4%
queens5x5/bt 57.76 ms 50.76 ms -12.1%
queens5x5/bm 58.44 ms 54.29 ms -7.1%
queens5x5/bjbt1 66.63 ms 59.13 ms -11.3%
queens5x5/bjbt2 64.87 ms 57.40 ms -11.5%
queens5x5/fc 129.3 ms 117.3 ms -9.3%
40b3e8c 5f34838 Change
TOTAL 691.4 ms 618.1 ms -10.6%

github-actions[bot] avatar Jun 05 '25 05:06 github-actions[bot]

Click here to check the status of your benchmark.

github-actions[bot] avatar Jun 05 '25 05:06 github-actions[bot]

Comparing benchmark results of 'nofib' on '40b3e8c4d' (base) and '5f3483866' (PR)

Results table
Script 40b3e8c 5f34838 Change
clausify/formula1 2.241 ms 2.096 ms -6.5%
clausify/formula2 3.028 ms 2.816 ms -7.0%
clausify/formula3 8.327 ms 7.734 ms -7.1%
clausify/formula4 17.78 ms 15.91 ms -10.5%
clausify/formula5 40.43 ms 37.35 ms -7.6%
knights/4x4 15.19 ms 12.89 ms -15.1%
knights/6x6 36.82 ms 31.35 ms -14.9%
knights/8x8 63.24 ms 54.23 ms -14.2%
primetest/05digits 5.531 ms 4.828 ms -12.7%
primetest/10digits 10.71 ms 9.534 ms -11.0%
primetest/30digits 31.36 ms 28.15 ms -10.2%
primetest/50digits 50.58 ms 45.94 ms -9.2%
queens4x4/bt 4.155 ms 3.719 ms -10.5%
queens4x4/bm 5.149 ms 4.728 ms -8.2%
queens4x4/bjbt1 4.948 ms 4.480 ms -9.5%
queens4x4/bjbt2 4.676 ms 4.189 ms -10.4%
queens4x4/fc 10.20 ms 9.336 ms -8.5%
queens5x5/bt 57.62 ms 50.64 ms -12.1%
queens5x5/bm 58.36 ms 54.33 ms -6.9%
queens5x5/bjbt1 66.44 ms 59.16 ms -11.0%
queens5x5/bjbt2 64.68 ms 57.24 ms -11.5%
queens5x5/fc 129.0 ms 117.4 ms -9.0%
40b3e8c 5f34838 Change
TOTAL 690.5 ms 618.0 ms -10.5%

github-actions[bot] avatar Jun 05 '25 06:06 github-actions[bot]

Click here to check the status of your benchmark.

github-actions[bot] avatar Jun 05 '25 06:06 github-actions[bot]

Comparing benchmark results of 'lists' on '40b3e8c4d' (base) and '5f3483866' (PR)

Results table
Script 40b3e8c 5f34838 Change
sort/ghcSort/50 182.2 μs 150.8 μs -17.2%
sort/ghcSort/100 423.7 μs 347.5 μs -18.0%
sort/ghcSort/150 735.6 μs 596.0 μs -19.0%
sort/ghcSort/200 987.0 μs 802.4 μs -18.7%
sort/ghcSort/250 1.281 ms 1.043 ms -18.6%
sort/ghcSort/300 1.682 ms 1.369 ms -18.6%
sort/insertionSort/50 613.1 μs 475.2 μs -22.5%
sort/insertionSort/100 2.446 ms 1.888 ms -22.8%
sort/insertionSort/150 5.516 ms 4.240 ms -23.1%
sort/insertionSort/200 9.846 ms 7.573 ms -23.1%
sort/insertionSort/250 15.49 ms 11.85 ms -23.5%
sort/insertionSort/300 22.37 ms 17.13 ms -23.4%
sort/mergeSort/50 555.3 μs 453.9 μs -18.3%
sort/mergeSort/100 1.273 ms 1.046 ms -17.8%
sort/mergeSort/150 2.045 ms 1.686 ms -17.6%
sort/mergeSort/200 2.884 ms 2.366 ms -18.0%
sort/mergeSort/250 3.765 ms 3.097 ms -17.7%
sort/mergeSort/300 4.582 ms 3.773 ms -17.7%
sort/quickSort/50 1.472 ms 1.124 ms -23.6%
sort/quickSort/100 6.043 ms 4.731 ms -21.7%
sort/quickSort/150 13.62 ms 10.57 ms -22.4%
sort/quickSort/200 24.13 ms 18.74 ms -22.3%
sort/quickSort/250 37.89 ms 29.47 ms -22.2%
sort/quickSort/300 54.94 ms 42.78 ms -22.1%
sum/compiled-from-Haskell/sum-right-builtin/100 83.15 μs 80.66 μs -3.0%
sum/compiled-from-Haskell/sum-right-builtin/500 435.4 μs 420.6 μs -3.4%
sum/compiled-from-Haskell/sum-right-builtin/1000 933.7 μs 903.2 μs -3.3%
sum/compiled-from-Haskell/sum-right-builtin/2500 2.854 ms 2.775 ms -2.8%
sum/compiled-from-Haskell/sum-right-builtin/5000 6.170 ms 6.008 ms -2.6%
sum/compiled-from-Haskell/sum-right-Scott/100 48.32 μs 46.45 μs -3.9%
sum/compiled-from-Haskell/sum-right-Scott/500 259.7 μs 247.0 μs -4.9%
sum/compiled-from-Haskell/sum-right-Scott/1000 560.3 μs 540.2 μs -3.6%
sum/compiled-from-Haskell/sum-right-Scott/2500 1.951 ms 1.889 ms -3.2%
sum/compiled-from-Haskell/sum-right-Scott/5000 4.412 ms 4.282 ms -2.9%
sum/compiled-from-Haskell/sum-right-data/100 263.2 μs 215.3 μs -18.2%
sum/compiled-from-Haskell/sum-right-data/500 1.454 ms 1.190 ms -18.2%
sum/compiled-from-Haskell/sum-right-data/1000 3.257 ms 2.724 ms -16.4%
sum/compiled-from-Haskell/sum-right-data/2500 8.723 ms 7.449 ms -14.6%
sum/compiled-from-Haskell/sum-right-data/5000 18.29 ms 15.75 ms -13.9%
sum/compiled-from-Haskell/sum-left-builtin/100 83.61 μs 80.03 μs -4.3%
sum/compiled-from-Haskell/sum-left-builtin/500 429.7 μs 409.6 μs -4.7%
sum/compiled-from-Haskell/sum-left-builtin/1000 931.9 μs 886.2 μs -4.9%
sum/compiled-from-Haskell/sum-left-builtin/2500 2.821 ms 2.711 ms -3.9%
sum/compiled-from-Haskell/sum-left-builtin/5000 6.215 ms 5.957 ms -4.2%
sum/compiled-from-Haskell/sum-left-Scott/100 48.20 μs 43.75 μs -9.2%
sum/compiled-from-Haskell/sum-left-Scott/500 257.6 μs 235.8 μs -8.5%
sum/compiled-from-Haskell/sum-left-Scott/1000 563.1 μs 520.3 μs -7.6%
sum/compiled-from-Haskell/sum-left-Scott/2500 1.907 ms 1.798 ms -5.7%
sum/compiled-from-Haskell/sum-left-Scott/5000 4.352 ms 4.141 ms -4.8%
sum/compiled-from-Haskell/sum-left-data/100 270.1 μs 231.2 μs -14.4%
sum/compiled-from-Haskell/sum-left-data/500 1.524 ms 1.323 ms -13.2%
sum/compiled-from-Haskell/sum-left-data/1000 3.371 ms 2.810 ms -16.6%
sum/compiled-from-Haskell/sum-left-data/2500 8.973 ms 7.938 ms -11.5%
sum/compiled-from-Haskell/sum-left-data/5000 18.63 ms 16.71 ms -10.3%
sum/hand-written-PLC/sum-right-builtin/100 56.02 μs 55.68 μs -0.6%
sum/hand-written-PLC/sum-right-builtin/500 287.3 μs 282.0 μs -1.8%
sum/hand-written-PLC/sum-right-builtin/1000 592.1 μs 582.6 μs -1.6%
sum/hand-written-PLC/sum-right-builtin/2500 1.730 ms 1.700 ms -1.7%
sum/hand-written-PLC/sum-right-builtin/5000 3.775 ms 3.701 ms -2.0%
sum/hand-written-PLC/sum-right-Scott/100 38.09 μs 36.30 μs -4.7%
sum/hand-written-PLC/sum-right-Scott/500 205.4 μs 196.1 μs -4.5%
sum/hand-written-PLC/sum-right-Scott/1000 443.2 μs 423.6 μs -4.4%
sum/hand-written-PLC/sum-right-Scott/2500 1.626 ms 1.571 ms -3.4%
sum/hand-written-PLC/sum-right-Scott/5000 4.558 ms 4.438 ms -2.6%
sum/hand-written-PLC/sum-left-builtin/100 62.41 μs 58.77 μs -5.8%
sum/hand-written-PLC/sum-left-builtin/500 310.2 μs 289.9 μs -6.5%
sum/hand-written-PLC/sum-left-builtin/1000 620.2 μs 577.5 μs -6.9%
sum/hand-written-PLC/sum-left-builtin/2500 1.537 ms 1.434 ms -6.7%
sum/hand-written-PLC/sum-left-builtin/5000 3.061 ms 2.858 ms -6.6%
sum/hand-written-PLC/sum-left-Scott/100 41.18 μs 39.09 μs -5.1%
sum/hand-written-PLC/sum-left-Scott/500 223.8 μs 218.4 μs -2.4%
sum/hand-written-PLC/sum-left-Scott/1000 504.9 μs 489.4 μs -3.1%
sum/hand-written-PLC/sum-left-Scott/2500 1.833 ms 1.792 ms -2.2%
sum/hand-written-PLC/sum-left-Scott/5000 4.638 ms 4.568 ms -1.5%
40b3e8c 5f34838 Change
TOTAL 341.0 ms 282.9 ms -17.0%

github-actions[bot] avatar Jun 05 '25 07:06 github-actions[bot]

Click here to check the status of your benchmark.

github-actions[bot] avatar Jun 05 '25 07:06 github-actions[bot]

Comparing benchmark results of 'lists' on '40b3e8c4d' (base) and '5f3483866' (PR)

Results table
Script 40b3e8c 5f34838 Change
sort/ghcSort/50 182.2 μs 150.5 μs -17.4%
sort/ghcSort/100 423.9 μs 346.1 μs -18.4%
sort/ghcSort/150 737.0 μs 593.7 μs -19.4%
sort/ghcSort/200 989.8 μs 799.8 μs -19.2%
sort/ghcSort/250 1.285 ms 1.040 ms -19.1%
sort/ghcSort/300 1.686 ms 1.360 ms -19.3%
sort/insertionSort/50 614.3 μs 469.7 μs -23.5%
sort/insertionSort/100 2.449 ms 1.866 ms -23.8%
sort/insertionSort/150 5.519 ms 4.180 ms -24.3%
sort/insertionSort/200 9.847 ms 7.439 ms -24.5%
sort/insertionSort/250 15.44 ms 11.67 ms -24.4%
sort/insertionSort/300 22.32 ms 16.92 ms -24.2%
sort/mergeSort/50 549.8 μs 453.0 μs -17.6%
sort/mergeSort/100 1.267 ms 1.038 ms -18.1%
sort/mergeSort/150 2.032 ms 1.687 ms -17.0%
sort/mergeSort/200 2.862 ms 2.357 ms -17.6%
sort/mergeSort/250 3.746 ms 3.090 ms -17.5%
sort/mergeSort/300 4.560 ms 3.777 ms -17.2%
sort/quickSort/50 1.471 ms 1.117 ms -24.1%
sort/quickSort/100 6.043 ms 4.708 ms -22.1%
sort/quickSort/150 13.61 ms 10.58 ms -22.3%
sort/quickSort/200 24.08 ms 18.69 ms -22.4%
sort/quickSort/250 37.84 ms 29.32 ms -22.5%
sort/quickSort/300 54.89 ms 42.57 ms -22.4%
sum/compiled-from-Haskell/sum-right-builtin/100 82.16 μs 81.05 μs -1.4%
sum/compiled-from-Haskell/sum-right-builtin/500 429.6 μs 422.8 μs -1.6%
sum/compiled-from-Haskell/sum-right-builtin/1000 921.2 μs 907.6 μs -1.5%
sum/compiled-from-Haskell/sum-right-builtin/2500 2.814 ms 2.788 ms -0.9%
sum/compiled-from-Haskell/sum-right-builtin/5000 6.095 ms 6.021 ms -1.2%
sum/compiled-from-Haskell/sum-right-Scott/100 47.14 μs 46.30 μs -1.8%
sum/compiled-from-Haskell/sum-right-Scott/500 252.6 μs 248.9 μs -1.5%
sum/compiled-from-Haskell/sum-right-Scott/1000 547.8 μs 541.6 μs -1.1%
sum/compiled-from-Haskell/sum-right-Scott/2500 1.921 ms 1.889 ms -1.7%
sum/compiled-from-Haskell/sum-right-Scott/5000 4.347 ms 4.281 ms -1.5%
sum/compiled-from-Haskell/sum-right-data/100 260.4 μs 215.9 μs -17.1%
sum/compiled-from-Haskell/sum-right-data/500 1.445 ms 1.186 ms -17.9%
sum/compiled-from-Haskell/sum-right-data/1000 3.245 ms 2.720 ms -16.2%
sum/compiled-from-Haskell/sum-right-data/2500 8.702 ms 7.441 ms -14.5%
sum/compiled-from-Haskell/sum-right-data/5000 18.26 ms 15.71 ms -14.0%
sum/compiled-from-Haskell/sum-left-builtin/100 81.36 μs 79.86 μs -1.8%
sum/compiled-from-Haskell/sum-left-builtin/500 416.1 μs 410.8 μs -1.3%
sum/compiled-from-Haskell/sum-left-builtin/1000 900.2 μs 886.5 μs -1.5%
sum/compiled-from-Haskell/sum-left-builtin/2500 2.755 ms 2.718 ms -1.3%
sum/compiled-from-Haskell/sum-left-builtin/5000 6.065 ms 5.972 ms -1.5%
sum/compiled-from-Haskell/sum-left-Scott/100 44.97 μs 43.57 μs -3.1%
sum/compiled-from-Haskell/sum-left-Scott/500 243.1 μs 236.3 μs -2.8%
sum/compiled-from-Haskell/sum-left-Scott/1000 533.5 μs 519.4 μs -2.6%
sum/compiled-from-Haskell/sum-left-Scott/2500 1.846 ms 1.802 ms -2.4%
sum/compiled-from-Haskell/sum-left-Scott/5000 4.249 ms 4.156 ms -2.2%
sum/compiled-from-Haskell/sum-left-data/100 266.1 μs 232.4 μs -12.7%
sum/compiled-from-Haskell/sum-left-data/500 1.481 ms 1.332 ms -10.1%
sum/compiled-from-Haskell/sum-left-data/1000 3.325 ms 2.827 ms -15.0%
sum/compiled-from-Haskell/sum-left-data/2500 8.900 ms 7.958 ms -10.6%
sum/compiled-from-Haskell/sum-left-data/5000 18.53 ms 16.77 ms -9.5%
sum/hand-written-PLC/sum-right-builtin/100 56.46 μs 54.57 μs -3.3%
sum/hand-written-PLC/sum-right-builtin/500 284.4 μs 274.4 μs -3.5%
sum/hand-written-PLC/sum-right-builtin/1000 588.7 μs 570.7 μs -3.1%
sum/hand-written-PLC/sum-right-builtin/2500 1.725 ms 1.670 ms -3.2%
sum/hand-written-PLC/sum-right-builtin/5000 3.764 ms 3.643 ms -3.2%
sum/hand-written-PLC/sum-right-Scott/100 37.95 μs 35.62 μs -6.1%
sum/hand-written-PLC/sum-right-Scott/500 204.5 μs 196.1 μs -4.1%
sum/hand-written-PLC/sum-right-Scott/1000 440.0 μs 423.4 μs -3.8%
sum/hand-written-PLC/sum-right-Scott/2500 1.624 ms 1.572 ms -3.2%
sum/hand-written-PLC/sum-right-Scott/5000 4.548 ms 4.452 ms -2.1%
sum/hand-written-PLC/sum-left-builtin/100 59.63 μs 57.11 μs -4.2%
sum/hand-written-PLC/sum-left-builtin/500 295.7 μs 283.2 μs -4.2%
sum/hand-written-PLC/sum-left-builtin/1000 591.1 μs 565.8 μs -4.3%
sum/hand-written-PLC/sum-left-builtin/2500 1.464 ms 1.406 ms -4.0%
sum/hand-written-PLC/sum-left-builtin/5000 2.918 ms 2.806 ms -3.8%
sum/hand-written-PLC/sum-left-Scott/100 40.75 μs 39.79 μs -2.4%
sum/hand-written-PLC/sum-left-Scott/500 225.5 μs 216.9 μs -3.8%
sum/hand-written-PLC/sum-left-Scott/1000 505.2 μs 488.7 μs -3.3%
sum/hand-written-PLC/sum-left-Scott/2500 1.835 ms 1.797 ms -2.1%
sum/hand-written-PLC/sum-left-Scott/5000 4.653 ms 4.571 ms -1.8%
40b3e8c 5f34838 Change
TOTAL 339.3 ms 281.8 ms -17.0%

github-actions[bot] avatar Jun 05 '25 08:06 github-actions[bot]