Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Builtins] Add 'ListToConstr' and 'DataToConstr' #5704

Open
wants to merge 9 commits into
base: master
Choose a base branch
from

Conversation

effectfully
Copy link
Contributor

@effectfully effectfully commented Jan 5, 2024

This is a competitor of #5486, let's see how it performs.

This adds the listToConstr builtin whose Plutus type is

all a. list a -> sop [] [a, (list a)]

The idea is that we can use this builtin to implement faster pattern matching over built-in lists by piggy-backing on case that we use for pattern matching over sums-of-products:

matchList : all a r. list a -> r -> (a -> list a -> r) -> r
  = /\a r ->
      \(xs : list a) (nilCase : r) (consCase : a -> list a -> r) ->
        case r (listToConstr {a} xs) [nilCase, consCase]

Implementation-wise this requires us to add the following class:

class ToConstr term where
    toConstr
        :: forall rep. KnownTypeAst TyName (UniOf term) rep
        => Word64 -> [term] -> Opaque term rep

and add it to HasMeaningIn uni val.

The meaning of the listToConstr builtin is implemented as follows:

    toBuiltinMeaning _semvar ListToConstr =
        let listToConstrDenotation
                :: KnownTypeAst TyName DefaultUni a
                => SomeConstant uni [a]
                -> EvaluationResult (Opaque val (TySopRep '[ '[], '[a, [a]] ]))
            listToConstrDenotation (SomeConstant (Some (ValueOf uniListA xs0))) = do
                DefaultUniList uniA <- pure uniListA
                pure $ case xs0 of
                    []     -> toConstr 0 []
                    x : xs -> toConstr 1 [fromValueOf uniA x, fromValueOf uniListA xs]
            {-# INLINE listToConstrDenotation #-}
        in makeBuiltinMeaning
            listToConstrDenotation
            (\_ _ -> ExBudgetLast mempty)

i.e. it simply turns the outer constructor of a list into an SOP term leaving all other constructors of the list intact.

The only interesting remaining part is that we make matchList an Internal builtin (i.e. a NOINLINE one) and tell the plugin to replace that builtin with the definition of matchList given above.

@effectfully
Copy link
Contributor Author

/benchmark plutus-benchmark:lists

Copy link
Contributor

github-actions bot commented Jan 6, 2024

Click here to check the status of your benchmark.

…to effectfully/builtins/add-ListToConstr
@effectfully
Copy link
Contributor Author

/benchmark plutus-benchmark:lists

Copy link
Contributor

github-actions bot commented Jan 6, 2024

Click here to check the status of your benchmark.

Copy link
Contributor

github-actions bot commented Jan 6, 2024

Comparing benchmark results of 'plutus-benchmark:lists' on 'b8a74e7b4' (base) and '9d99fc6ed' (PR)

Results table
Script b8a74e7 9d99fc6 Change
sort/ghcSort/10 36.74 μs 37.28 μs +1.5%
sort/ghcSort/20 85.89 μs 87.10 μs +1.4%
sort/ghcSort/30 131.6 μs 133.1 μs +1.1%
sort/ghcSort/40 194.6 μs 197.2 μs +1.3%
sort/ghcSort/50 236.2 μs 237.5 μs +0.6%
sort/ghcSort/60 299.5 μs 304.3 μs +1.6%
sort/ghcSort/70 390.3 μs 396.1 μs +1.5%
sort/ghcSort/80 440.1 μs 448.3 μs +1.9%
sort/ghcSort/90 488.0 μs 494.8 μs +1.4%
sort/ghcSort/100 549.3 μs 556.2 μs +1.3%
sort/ghcSort/110 607.4 μs 613.4 μs +1.0%
sort/ghcSort/120 689.6 μs 695.6 μs +0.9%
sort/ghcSort/130 842.9 μs 856.7 μs +1.6%
sort/ghcSort/140 899.9 μs 908.0 μs +0.9%
sort/ghcSort/150 962.0 μs 969.4 μs +0.8%
sort/ghcSort/160 1.021 ms 1.033 ms +1.2%
sort/ghcSort/170 1.079 ms 1.091 ms +1.1%
sort/ghcSort/180 1.136 ms 1.150 ms +1.2%
sort/ghcSort/190 1.204 ms 1.214 ms +0.8%
sort/ghcSort/200 1.296 ms 1.308 ms +0.9%
sort/ghcSort/210 1.361 ms 1.367 ms +0.4%
sort/ghcSort/220 1.417 ms 1.430 ms +0.9%
sort/ghcSort/230 1.506 ms 1.528 ms +1.5%
sort/ghcSort/240 1.596 ms 1.620 ms +1.5%
sort/ghcSort/250 1.692 ms 1.702 ms +0.6%
sort/ghcSort/260 1.926 ms 1.951 ms +1.3%
sort/ghcSort/270 1.970 ms 2.004 ms +1.7%
sort/ghcSort/280 2.055 ms 2.069 ms +0.7%
sort/ghcSort/290 2.118 ms 2.144 ms +1.2%
sort/ghcSort/300 2.191 ms 2.218 ms +1.2%
sort/ghcSort/310 2.262 ms 2.291 ms +1.3%
sort/ghcSort/320 2.342 ms 2.368 ms +1.1%
sort/ghcSort/330 2.431 ms 2.425 ms -0.2%
sort/ghcSort/340 2.503 ms 2.525 ms +0.9%
sort/ghcSort/350 2.546 ms 2.567 ms +0.8%
sort/ghcSort/360 2.608 ms 2.639 ms +1.2%
sort/ghcSort/370 2.686 ms 2.708 ms +0.8%
sort/ghcSort/380 2.831 ms 2.800 ms -1.1%
sort/ghcSort/390 2.896 ms 2.927 ms +1.1%
sort/ghcSort/400 2.965 ms 3.004 ms +1.3%
sort/ghcSort/410 2.997 ms 3.040 ms +1.4%
sort/ghcSort/420 3.114 ms 3.146 ms +1.0%
sort/ghcSort/430 3.154 ms 3.191 ms +1.2%
sort/ghcSort/440 3.250 ms 3.286 ms +1.1%
sort/ghcSort/450 3.427 ms 3.470 ms +1.3%
sort/ghcSort/460 3.479 ms 3.516 ms +1.1%
sort/ghcSort/470 3.546 ms 3.598 ms +1.5%
sort/ghcSort/480 3.680 ms 3.730 ms +1.4%
sort/ghcSort/490 3.765 ms 3.801 ms +1.0%
sort/ghcSort/500 3.877 ms 3.904 ms +0.7%
sort/insertionSort/10 34.22 μs 34.69 μs +1.4%
sort/insertionSort/20 122.9 μs 124.0 μs +0.9%
sort/insertionSort/30 267.6 μs 268.7 μs +0.4%
sort/insertionSort/40 470.2 μs 474.6 μs +0.9%
sort/insertionSort/50 726.6 μs 731.6 μs +0.7%
sort/insertionSort/60 1.042 ms 1.055 ms +1.2%
sort/insertionSort/70 1.464 ms 1.434 ms -2.0%
sort/insertionSort/80 1.839 ms 1.867 ms +1.5%
sort/insertionSort/90 2.416 ms 2.346 ms -2.9%
sort/insertionSort/100 2.858 ms 2.885 ms +0.9%
sort/insertionSort/110 3.470 ms 3.506 ms +1.0%
sort/insertionSort/120 4.120 ms 4.159 ms +0.9%
sort/insertionSort/130 5.009 ms 4.881 ms -2.6%
sort/insertionSort/140 5.613 ms 5.640 ms +0.5%
sort/insertionSort/150 6.486 ms 6.490 ms +0.1%
sort/insertionSort/160 7.474 ms 7.383 ms -1.2%
sort/insertionSort/170 8.609 ms 8.332 ms -3.2%
sort/insertionSort/180 9.638 ms 9.331 ms -3.2%
sort/insertionSort/190 10.36 ms 10.46 ms +1.0%
sort/insertionSort/200 11.48 ms 11.54 ms +0.5%
sort/insertionSort/210 12.71 ms 12.74 ms +0.2%
sort/insertionSort/220 14.31 ms 14.01 ms -2.1%
sort/insertionSort/230 15.37 ms 15.31 ms -0.4%
sort/insertionSort/240 16.62 ms 16.70 ms +0.5%
sort/insertionSort/250 18.68 ms 18.08 ms -3.2%
sort/insertionSort/260 19.49 ms 19.59 ms +0.5%
sort/insertionSort/270 21.02 ms 21.12 ms +0.5%
sort/insertionSort/280 22.49 ms 22.74 ms +1.1%
sort/insertionSort/290 24.30 ms 24.43 ms +0.5%
sort/insertionSort/300 26.10 ms 26.06 ms -0.2%
sort/insertionSort/310 27.75 ms 28.02 ms +1.0%
sort/insertionSort/320 30.87 ms 29.83 ms -3.4%
sort/insertionSort/330 32.47 ms 31.81 ms -2.0%
sort/insertionSort/340 35.05 ms 33.55 ms -4.3%
sort/insertionSort/350 37.00 ms 35.79 ms -3.3%
sort/insertionSort/360 39.02 ms 37.84 ms -3.0%
sort/insertionSort/370 40.00 ms 40.22 ms +0.5%
sort/insertionSort/380 43.77 ms 42.36 ms -3.2%
sort/insertionSort/390 44.32 ms 44.45 ms +0.3%
sort/insertionSort/400 47.34 ms 46.92 ms -0.9%
sort/insertionSort/410 51.33 ms 49.48 ms -3.6%
sort/insertionSort/420 53.70 ms 51.95 ms -3.3%
sort/insertionSort/430 55.90 ms 54.52 ms -2.5%
sort/insertionSort/440 56.65 ms 57.10 ms +0.8%
sort/insertionSort/450 59.24 ms 59.98 ms +1.2%
sort/insertionSort/460 62.08 ms 62.59 ms +0.8%
sort/insertionSort/470 66.02 ms 65.21 ms -1.2%
sort/insertionSort/480 67.44 ms 68.30 ms +1.3%
sort/insertionSort/490 73.46 ms 71.56 ms -2.6%
sort/insertionSort/500 75.87 ms 74.42 ms -1.9%
sort/mergeSort/10 87.96 μs 90.07 μs +2.4%
sort/mergeSort/20 213.3 μs 219.3 μs +2.8%
sort/mergeSort/30 350.7 μs 361.9 μs +3.2%
sort/mergeSort/40 498.3 μs 510.6 μs +2.5%
sort/mergeSort/50 647.3 μs 664.4 μs +2.6%
sort/mergeSort/60 815.7 μs 837.9 μs +2.7%
sort/mergeSort/70 983.0 μs 1.005 ms +2.2%
sort/mergeSort/80 1.154 ms 1.181 ms +2.3%
sort/mergeSort/90 1.330 ms 1.357 ms +2.0%
sort/mergeSort/100 1.496 ms 1.536 ms +2.7%
sort/mergeSort/110 1.723 ms 1.721 ms -0.1%
sort/mergeSort/120 1.918 ms 1.914 ms -0.2%
sort/mergeSort/130 2.138 ms 2.127 ms -0.5%
sort/mergeSort/140 2.245 ms 2.292 ms +2.1%
sort/mergeSort/150 2.415 ms 2.469 ms +2.2%
sort/mergeSort/160 2.614 ms 2.677 ms +2.4%
sort/mergeSort/170 2.800 ms 2.869 ms +2.5%
sort/mergeSort/180 2.998 ms 3.063 ms +2.2%
sort/mergeSort/190 3.198 ms 3.279 ms +2.5%
sort/mergeSort/200 3.383 ms 3.450 ms +2.0%
sort/mergeSort/210 3.587 ms 3.668 ms +2.3%
sort/mergeSort/220 3.771 ms 3.856 ms +2.3%
sort/mergeSort/230 4.046 ms 4.082 ms +0.9%
sort/mergeSort/240 4.198 ms 4.291 ms +2.2%
sort/mergeSort/250 4.572 ms 4.527 ms -1.0%
sort/mergeSort/260 4.647 ms 4.751 ms +2.2%
sort/mergeSort/270 4.843 ms 4.910 ms +1.4%
sort/mergeSort/280 5.000 ms 5.122 ms +2.4%
sort/mergeSort/290 5.200 ms 5.311 ms +2.1%
sort/mergeSort/300 5.397 ms 5.513 ms +2.1%
sort/mergeSort/310 5.633 ms 5.734 ms +1.8%
sort/mergeSort/320 5.850 ms 5.990 ms +2.4%
sort/mergeSort/330 6.033 ms 6.168 ms +2.2%
sort/mergeSort/340 6.247 ms 6.379 ms +2.1%
sort/mergeSort/350 6.657 ms 6.620 ms -0.6%
sort/mergeSort/360 6.884 ms 6.826 ms -0.8%
sort/mergeSort/370 6.901 ms 7.057 ms +2.3%
sort/mergeSort/380 7.097 ms 7.284 ms +2.6%
sort/mergeSort/390 7.352 ms 7.512 ms +2.2%
sort/mergeSort/400 7.763 ms 7.698 ms -0.8%
sort/mergeSort/410 7.756 ms 7.946 ms +2.4%
sort/mergeSort/420 7.992 ms 8.171 ms +2.2%
sort/mergeSort/430 8.504 ms 8.421 ms -1.0%
sort/mergeSort/440 8.391 ms 8.579 ms +2.2%
sort/mergeSort/450 8.613 ms 8.811 ms +2.3%
sort/mergeSort/460 8.857 ms 9.051 ms +2.2%
sort/mergeSort/470 9.107 ms 9.298 ms +2.1%
sort/mergeSort/480 9.347 ms 9.531 ms +2.0%
sort/mergeSort/490 9.843 ms 9.766 ms -0.8%
sort/mergeSort/500 9.832 ms 10.04 ms +2.1%
sort/quickSort/10 80.44 μs 81.19 μs +0.9%
sort/quickSort/20 294.7 μs 297.9 μs +1.1%
sort/quickSort/30 659.2 μs 655.7 μs -0.5%
sort/quickSort/40 1.158 ms 1.166 ms +0.7%
sort/quickSort/50 1.819 ms 1.831 ms +0.7%
sort/quickSort/60 2.628 ms 2.651 ms +0.9%
sort/quickSort/70 3.581 ms 3.610 ms +0.8%
sort/quickSort/80 4.679 ms 4.723 ms +0.9%
sort/quickSort/90 5.950 ms 6.021 ms +1.2%
sort/quickSort/100 7.249 ms 7.346 ms +1.3%
sort/quickSort/110 8.808 ms 8.931 ms +1.4%
sort/quickSort/120 10.46 ms 10.58 ms +1.1%
sort/quickSort/130 12.24 ms 12.39 ms +1.2%
sort/quickSort/140 14.09 ms 14.29 ms +1.4%
sort/quickSort/150 16.33 ms 16.47 ms +0.9%
sort/quickSort/160 18.48 ms 18.67 ms +1.0%
sort/quickSort/170 20.79 ms 21.02 ms +1.1%
sort/quickSort/180 23.43 ms 23.63 ms +0.9%
sort/quickSort/190 25.99 ms 26.31 ms +1.2%
sort/quickSort/200 28.81 ms 29.05 ms +0.8%
sort/quickSort/210 31.71 ms 32.15 ms +1.4%
sort/quickSort/220 34.77 ms 35.20 ms +1.2%
sort/quickSort/230 38.15 ms 38.66 ms +1.3%
sort/quickSort/240 41.47 ms 42.17 ms +1.7%
sort/quickSort/250 44.92 ms 45.57 ms +1.4%
sort/quickSort/260 48.58 ms 49.37 ms +1.6%
sort/quickSort/270 52.30 ms 53.22 ms +1.8%
sort/quickSort/280 56.24 ms 57.35 ms +2.0%
sort/quickSort/290 60.35 ms 61.39 ms +1.7%
sort/quickSort/300 64.77 ms 65.80 ms +1.6%
sort/quickSort/310 69.18 ms 70.24 ms +1.5%
sort/quickSort/320 73.77 ms 74.94 ms +1.6%
sort/quickSort/330 78.11 ms 79.88 ms +2.3%
sort/quickSort/340 84.15 ms 85.44 ms +1.5%
sort/quickSort/350 88.20 ms 90.12 ms +2.2%
sort/quickSort/360 93.29 ms 95.44 ms +2.3%
sort/quickSort/370 98.79 ms 100.6 ms +1.8%
sort/quickSort/380 104.4 ms 106.3 ms +1.8%
sort/quickSort/390 110.2 ms 111.7 ms +1.4%
sort/quickSort/400 116.1 ms 118.1 ms +1.7%
sort/quickSort/410 121.6 ms 123.9 ms +1.9%
sort/quickSort/420 128.1 ms 130.6 ms +2.0%
sort/quickSort/430 134.7 ms 136.8 ms +1.6%
sort/quickSort/440 140.3 ms 143.3 ms +2.1%
sort/quickSort/450 147.2 ms 150.2 ms +2.0%
sort/quickSort/460 154.5 ms 157.1 ms +1.7%
sort/quickSort/470 161.0 ms 163.5 ms +1.6%
sort/quickSort/480 168.7 ms 171.9 ms +1.9%
sort/quickSort/490 175.6 ms 178.9 ms +1.9%
sort/quickSort/500 182.2 ms 185.7 ms +1.9%
sum/compiled-from-Haskell/sum-right-builtin/10 8.388 μs 6.784 μs -19.1%
sum/compiled-from-Haskell/sum-right-builtin/50 39.28 μs 30.84 μs -21.5%
sum/compiled-from-Haskell/sum-right-builtin/100 79.08 μs 62.56 μs -20.9%
sum/compiled-from-Haskell/sum-right-builtin/500 430.4 μs 333.3 μs -22.6%
sum/compiled-from-Haskell/sum-right-builtin/1000 953.2 μs 725.1 μs -23.9%
sum/compiled-from-Haskell/sum-right-builtin/5000 6.680 ms 5.448 ms -18.4%
sum/compiled-from-Haskell/sum-right-builtin/10000 14.88 ms 12.02 ms -19.2%
sum/compiled-from-Haskell/sum-right-Scott/10 6.762 μs 6.954 μs +2.8%
sum/compiled-from-Haskell/sum-right-Scott/50 31.20 μs 32.38 μs +3.8%
sum/compiled-from-Haskell/sum-right-Scott/100 62.63 μs 64.71 μs +3.3%
sum/compiled-from-Haskell/sum-right-Scott/500 336.0 μs 344.6 μs +2.6%
sum/compiled-from-Haskell/sum-right-Scott/1000 737.6 μs 756.8 μs +2.6%
sum/compiled-from-Haskell/sum-right-Scott/5000 5.671 ms 5.771 ms +1.8%
sum/compiled-from-Haskell/sum-right-Scott/10000 13.96 ms 14.19 ms +1.6%
sum/compiled-from-Haskell/sum-right-data/10 20.29 μs 20.80 μs +2.5%
sum/compiled-from-Haskell/sum-right-data/50 102.8 μs 99.95 μs -2.8%
sum/compiled-from-Haskell/sum-right-data/100 195.1 μs 199.6 μs +2.3%
sum/compiled-from-Haskell/sum-right-data/500 1.109 ms 1.131 ms +2.0%
sum/compiled-from-Haskell/sum-right-data/1000 2.587 ms 2.619 ms +1.2%
sum/compiled-from-Haskell/sum-right-data/5000 14.95 ms 15.14 ms +1.3%
sum/compiled-from-Haskell/sum-right-data/10000 31.62 ms 32.23 ms +1.9%
sum/compiled-from-Haskell/sum-left-builtin/10 8.016 μs 7.066 μs -11.9%
sum/compiled-from-Haskell/sum-left-builtin/50 38.19 μs 31.47 μs -17.6%
sum/compiled-from-Haskell/sum-left-builtin/100 76.13 μs 64.97 μs -14.7%
sum/compiled-from-Haskell/sum-left-builtin/500 409.2 μs 334.9 μs -18.2%
sum/compiled-from-Haskell/sum-left-builtin/1000 918.6 μs 720.7 μs -21.5%
sum/compiled-from-Haskell/sum-left-builtin/5000 6.528 ms 5.300 ms -18.8%
sum/compiled-from-Haskell/sum-left-builtin/10000 14.32 ms 12.17 ms -15.0%
sum/compiled-from-Haskell/sum-left-Scott/10 6.489 μs 7.029 μs +8.3%
sum/compiled-from-Haskell/sum-left-Scott/50 30.24 μs 32.42 μs +7.2%
sum/compiled-from-Haskell/sum-left-Scott/100 60.72 μs 65.94 μs +8.6%
sum/compiled-from-Haskell/sum-left-Scott/500 321.5 μs 345.9 μs +7.6%
sum/compiled-from-Haskell/sum-left-Scott/1000 703.7 μs 750.6 μs +6.7%
sum/compiled-from-Haskell/sum-left-Scott/5000 5.742 ms 5.962 ms +3.8%
sum/compiled-from-Haskell/sum-left-Scott/10000 13.08 ms 13.52 ms +3.4%
sum/compiled-from-Haskell/sum-left-data/10 21.23 μs 21.92 μs +3.3%
sum/compiled-from-Haskell/sum-left-data/50 100.8 μs 105.0 μs +4.2%
sum/compiled-from-Haskell/sum-left-data/100 201.4 μs 210.4 μs +4.5%
sum/compiled-from-Haskell/sum-left-data/500 1.142 ms 1.180 ms +3.3%
sum/compiled-from-Haskell/sum-left-data/1000 2.634 ms 2.714 ms +3.0%
sum/compiled-from-Haskell/sum-left-data/5000 15.12 ms 15.51 ms +2.6%
sum/compiled-from-Haskell/sum-left-data/10000 31.54 ms 32.47 ms +2.9%
sum/hand-written-PLC/sum-right-builtin/10 8.371 μs 6.729 μs -19.6%
sum/hand-written-PLC/sum-right-builtin/50 37.28 μs 29.67 μs -20.4%
sum/hand-written-PLC/sum-right-builtin/100 73.90 μs 59.18 μs -19.9%
sum/hand-written-PLC/sum-right-builtin/500 375.1 μs 295.0 μs -21.4%
sum/hand-written-PLC/sum-right-builtin/1000 784.0 μs 606.3 μs -22.7%
sum/hand-written-PLC/sum-right-builtin/5000 4.647 ms 3.809 ms -18.0%
sum/hand-written-PLC/sum-right-builtin/10000 9.586 ms 7.865 ms -18.0%
sum/hand-written-PLC/sum-right-Scott/10 5.553 μs 5.790 μs +4.3%
sum/hand-written-PLC/sum-right-Scott/50 24.70 μs 25.18 μs +1.9%
sum/hand-written-PLC/sum-right-Scott/100 47.57 μs 48.69 μs +2.4%
sum/hand-written-PLC/sum-right-Scott/500 244.9 μs 252.1 μs +2.9%
sum/hand-written-PLC/sum-right-Scott/1000 509.8 μs 525.4 μs +3.1%
sum/hand-written-PLC/sum-right-Scott/5000 3.618 ms 3.723 ms +2.9%
sum/hand-written-PLC/sum-right-Scott/10000 8.046 ms 8.258 ms +2.6%
sum/hand-written-PLC/sum-left-builtin/10 8.609 μs 7.548 μs -12.3%
sum/hand-written-PLC/sum-left-builtin/50 39.49 μs 33.64 μs -14.8%
sum/hand-written-PLC/sum-left-builtin/100 78.32 μs 67.94 μs -13.3%
sum/hand-written-PLC/sum-left-builtin/500 379.3 μs 335.4 μs -11.6%
sum/hand-written-PLC/sum-left-builtin/1000 747.6 μs 666.6 μs -10.8%
sum/hand-written-PLC/sum-left-builtin/5000 3.682 ms 3.303 ms -10.3%
sum/hand-written-PLC/sum-left-builtin/10000 7.380 ms 6.556 ms -11.2%
sum/hand-written-PLC/sum-left-Scott/10 5.724 μs 6.326 μs +10.5%
sum/hand-written-PLC/sum-left-Scott/50 26.03 μs 28.07 μs +7.8%
sum/hand-written-PLC/sum-left-Scott/100 50.89 μs 56.20 μs +10.4%
sum/hand-written-PLC/sum-left-Scott/500 260.7 μs 279.8 μs +7.3%
sum/hand-written-PLC/sum-left-Scott/1000 530.4 μs 569.7 μs +7.4%
sum/hand-written-PLC/sum-left-Scott/5000 3.249 ms 3.449 ms +6.2%
sum/hand-written-PLC/sum-left-Scott/10000 6.725 ms 7.142 ms +6.2%

@effectfully
Copy link
Contributor Author

/benchmark plutus-benchmark:lists

Copy link
Contributor

github-actions bot commented Jan 8, 2024

Click here to check the status of your benchmark.

Copy link
Contributor

github-actions bot commented Jan 8, 2024

Comparing benchmark results of 'plutus-benchmark:lists' on 'b8a74e7b4' (base) and 'a8183017d' (PR)

Results table
Script b8a74e7 a818301 Change
sort/ghcSort/10 36.81 μs 37.07 μs +0.7%
sort/ghcSort/20 85.99 μs 86.74 μs +0.9%
sort/ghcSort/30 131.6 μs 132.9 μs +1.0%
sort/ghcSort/40 194.5 μs 197.4 μs +1.5%
sort/ghcSort/50 235.1 μs 237.6 μs +1.1%
sort/ghcSort/60 300.4 μs 304.8 μs +1.5%
sort/ghcSort/70 390.6 μs 396.7 μs +1.6%
sort/ghcSort/80 442.8 μs 448.1 μs +1.2%
sort/ghcSort/90 490.2 μs 495.1 μs +1.0%
sort/ghcSort/100 548.1 μs 557.3 μs +1.7%
sort/ghcSort/110 607.1 μs 613.5 μs +1.1%
sort/ghcSort/120 686.0 μs 695.5 μs +1.4%
sort/ghcSort/130 848.3 μs 855.1 μs +0.8%
sort/ghcSort/140 900.1 μs 910.5 μs +1.2%
sort/ghcSort/150 980.6 μs 970.4 μs -1.0%
sort/ghcSort/160 1.021 ms 1.034 ms +1.3%
sort/ghcSort/170 1.081 ms 1.096 ms +1.4%
sort/ghcSort/180 1.143 ms 1.151 ms +0.7%
sort/ghcSort/190 1.206 ms 1.222 ms +1.3%
sort/ghcSort/200 1.302 ms 1.313 ms +0.8%
sort/ghcSort/210 1.351 ms 1.368 ms +1.3%
sort/ghcSort/220 1.414 ms 1.432 ms +1.3%
sort/ghcSort/230 1.513 ms 1.535 ms +1.5%
sort/ghcSort/240 1.609 ms 1.625 ms +1.0%
sort/ghcSort/250 1.686 ms 1.706 ms +1.2%
sort/ghcSort/260 1.935 ms 1.955 ms +1.0%
sort/ghcSort/270 1.993 ms 2.014 ms +1.1%
sort/ghcSort/280 2.062 ms 2.084 ms +1.1%
sort/ghcSort/290 2.131 ms 2.145 ms +0.7%
sort/ghcSort/300 2.198 ms 2.219 ms +1.0%
sort/ghcSort/310 2.271 ms 2.306 ms +1.5%
sort/ghcSort/320 2.355 ms 2.376 ms +0.9%
sort/ghcSort/330 2.418 ms 2.434 ms +0.7%
sort/ghcSort/340 2.509 ms 2.536 ms +1.1%
sort/ghcSort/350 2.553 ms 2.567 ms +0.5%
sort/ghcSort/360 2.614 ms 2.647 ms +1.3%
sort/ghcSort/370 2.684 ms 2.719 ms +1.3%
sort/ghcSort/380 2.783 ms 2.810 ms +1.0%
sort/ghcSort/390 2.909 ms 2.925 ms +0.6%
sort/ghcSort/400 2.973 ms 3.009 ms +1.2%
sort/ghcSort/410 2.996 ms 3.039 ms +1.4%
sort/ghcSort/420 3.106 ms 3.159 ms +1.7%
sort/ghcSort/430 3.161 ms 3.209 ms +1.5%
sort/ghcSort/440 3.272 ms 3.297 ms +0.8%
sort/ghcSort/450 3.432 ms 3.484 ms +1.5%
sort/ghcSort/460 3.476 ms 3.532 ms +1.6%
sort/ghcSort/470 3.567 ms 3.615 ms +1.3%
sort/ghcSort/480 3.701 ms 3.737 ms +1.0%
sort/ghcSort/490 3.756 ms 3.819 ms +1.7%
sort/ghcSort/500 3.868 ms 3.915 ms +1.2%
sort/insertionSort/10 34.19 μs 34.82 μs +1.8%
sort/insertionSort/20 123.4 μs 124.2 μs +0.6%
sort/insertionSort/30 266.9 μs 269.2 μs +0.9%
sort/insertionSort/40 465.8 μs 472.1 μs +1.4%
sort/insertionSort/50 725.0 μs 727.4 μs +0.3%
sort/insertionSort/60 1.039 ms 1.051 ms +1.2%
sort/insertionSort/70 1.467 ms 1.420 ms -3.2%
sort/insertionSort/80 1.840 ms 1.850 ms +0.5%
sort/insertionSort/90 2.333 ms 2.331 ms -0.1%
sort/insertionSort/100 2.874 ms 2.897 ms +0.8%
sort/insertionSort/110 3.469 ms 3.496 ms +0.8%
sort/insertionSort/120 4.132 ms 4.165 ms +0.8%
sort/insertionSort/130 4.843 ms 4.848 ms +0.1%
sort/insertionSort/140 5.627 ms 5.631 ms +0.1%
sort/insertionSort/150 6.464 ms 6.502 ms +0.6%
sort/insertionSort/160 7.334 ms 7.344 ms +0.1%
sort/insertionSort/170 8.513 ms 8.332 ms -2.1%
sort/insertionSort/180 9.294 ms 9.346 ms +0.6%
sort/insertionSort/190 10.37 ms 10.38 ms +0.1%
sort/insertionSort/200 11.47 ms 11.62 ms +1.3%
sort/insertionSort/210 12.69 ms 12.65 ms -0.3%
sort/insertionSort/220 13.86 ms 13.93 ms +0.5%
sort/insertionSort/230 15.17 ms 15.26 ms +0.6%
sort/insertionSort/240 16.56 ms 16.70 ms +0.8%
sort/insertionSort/250 18.01 ms 18.25 ms +1.3%
sort/insertionSort/260 19.45 ms 19.67 ms +1.1%
sort/insertionSort/270 21.82 ms 21.20 ms -2.8%
sort/insertionSort/280 22.50 ms 22.75 ms +1.1%
sort/insertionSort/290 24.36 ms 24.53 ms +0.7%
sort/insertionSort/300 26.10 ms 26.34 ms +0.9%
sort/insertionSort/310 27.80 ms 28.06 ms +0.9%
sort/insertionSort/320 29.62 ms 29.89 ms +0.9%
sort/insertionSort/330 31.40 ms 31.65 ms +0.8%
sort/insertionSort/340 33.57 ms 33.53 ms -0.1%
sort/insertionSort/350 35.49 ms 35.64 ms +0.4%
sort/insertionSort/360 37.51 ms 38.11 ms +1.6%
sort/insertionSort/370 39.68 ms 39.99 ms +0.8%
sort/insertionSort/380 41.68 ms 42.18 ms +1.2%
sort/insertionSort/390 44.29 ms 44.42 ms +0.3%
sort/insertionSort/400 46.70 ms 46.68 ms -0.0%
sort/insertionSort/410 49.15 ms 49.16 ms +0.0%
sort/insertionSort/420 51.60 ms 51.60 ms 0.0%
sort/insertionSort/430 54.25 ms 54.50 ms +0.5%
sort/insertionSort/440 56.63 ms 56.68 ms +0.1%
sort/insertionSort/450 59.39 ms 59.97 ms +1.0%
sort/insertionSort/460 61.96 ms 62.84 ms +1.4%
sort/insertionSort/470 65.13 ms 65.38 ms +0.4%
sort/insertionSort/480 67.34 ms 68.03 ms +1.0%
sort/insertionSort/490 70.31 ms 71.16 ms +1.2%
sort/insertionSort/500 73.59 ms 74.08 ms +0.7%
sort/mergeSort/10 87.75 μs 89.04 μs +1.5%
sort/mergeSort/20 212.9 μs 218.5 μs +2.6%
sort/mergeSort/30 350.2 μs 359.2 μs +2.6%
sort/mergeSort/40 498.3 μs 507.6 μs +1.9%
sort/mergeSort/50 649.0 μs 664.4 μs +2.4%
sort/mergeSort/60 818.4 μs 832.2 μs +1.7%
sort/mergeSort/70 981.5 μs 1.004 ms +2.3%
sort/mergeSort/80 1.155 ms 1.175 ms +1.7%
sort/mergeSort/90 1.330 ms 1.352 ms +1.7%
sort/mergeSort/100 1.501 ms 1.532 ms +2.1%
sort/mergeSort/110 1.678 ms 1.713 ms +2.1%
sort/mergeSort/120 1.868 ms 1.900 ms +1.7%
sort/mergeSort/130 2.079 ms 2.130 ms +2.5%
sort/mergeSort/140 2.234 ms 2.287 ms +2.4%
sort/mergeSort/150 2.409 ms 2.465 ms +2.3%
sort/mergeSort/160 2.635 ms 2.680 ms +1.7%
sort/mergeSort/170 2.793 ms 2.856 ms +2.3%
sort/mergeSort/180 2.993 ms 3.064 ms +2.4%
sort/mergeSort/190 3.274 ms 3.261 ms -0.4%
sort/mergeSort/200 3.378 ms 3.463 ms +2.5%
sort/mergeSort/210 3.584 ms 3.677 ms +2.6%
sort/mergeSort/220 3.772 ms 3.857 ms +2.3%
sort/mergeSort/230 3.991 ms 4.076 ms +2.1%
sort/mergeSort/240 4.202 ms 4.288 ms +2.0%
sort/mergeSort/250 4.440 ms 4.516 ms +1.7%
sort/mergeSort/260 4.652 ms 4.740 ms +1.9%
sort/mergeSort/270 4.814 ms 4.891 ms +1.6%
sort/mergeSort/280 5.008 ms 5.134 ms +2.5%
sort/mergeSort/290 5.191 ms 5.288 ms +1.9%
sort/mergeSort/300 5.401 ms 5.495 ms +1.7%
sort/mergeSort/310 5.600 ms 5.722 ms +2.2%
sort/mergeSort/320 5.840 ms 5.965 ms +2.1%
sort/mergeSort/330 6.025 ms 6.153 ms +2.1%
sort/mergeSort/340 6.231 ms 6.371 ms +2.2%
sort/mergeSort/350 6.472 ms 6.617 ms +2.2%
sort/mergeSort/360 6.680 ms 6.852 ms +2.6%
sort/mergeSort/370 6.909 ms 7.071 ms +2.3%
sort/mergeSort/380 7.322 ms 7.279 ms -0.6%
sort/mergeSort/390 7.348 ms 7.501 ms +2.1%
sort/mergeSort/400 7.696 ms 7.690 ms -0.1%
sort/mergeSort/410 7.768 ms 7.947 ms +2.3%
sort/mergeSort/420 8.010 ms 8.185 ms +2.2%
sort/mergeSort/430 8.237 ms 8.397 ms +1.9%
sort/mergeSort/440 8.395 ms 8.569 ms +2.1%
sort/mergeSort/450 8.627 ms 8.814 ms +2.2%
sort/mergeSort/460 9.147 ms 9.048 ms -1.1%
sort/mergeSort/470 9.111 ms 9.312 ms +2.2%
sort/mergeSort/480 9.305 ms 9.521 ms +2.3%
sort/mergeSort/490 9.554 ms 9.784 ms +2.4%
sort/mergeSort/500 9.849 ms 10.03 ms +1.8%
sort/quickSort/10 80.26 μs 81.27 μs +1.3%
sort/quickSort/20 294.7 μs 299.7 μs +1.7%
sort/quickSort/30 645.7 μs 656.3 μs +1.6%
sort/quickSort/40 1.158 ms 1.174 ms +1.4%
sort/quickSort/50 1.817 ms 1.835 ms +1.0%
sort/quickSort/60 2.623 ms 2.656 ms +1.3%
sort/quickSort/70 3.580 ms 3.613 ms +0.9%
sort/quickSort/80 4.677 ms 4.761 ms +1.8%
sort/quickSort/90 5.944 ms 6.045 ms +1.7%
sort/quickSort/100 7.246 ms 7.386 ms +1.9%
sort/quickSort/110 8.835 ms 8.966 ms +1.5%
sort/quickSort/120 10.47 ms 10.63 ms +1.5%
sort/quickSort/130 12.32 ms 12.46 ms +1.1%
sort/quickSort/140 14.12 ms 14.34 ms +1.6%
sort/quickSort/150 16.28 ms 16.53 ms +1.5%
sort/quickSort/160 18.46 ms 18.69 ms +1.2%
sort/quickSort/170 20.82 ms 21.20 ms +1.8%
sort/quickSort/180 23.35 ms 23.74 ms +1.7%
sort/quickSort/190 26.11 ms 26.50 ms +1.5%
sort/quickSort/200 28.78 ms 29.09 ms +1.1%
sort/quickSort/210 31.64 ms 32.20 ms +1.8%
sort/quickSort/220 34.83 ms 35.49 ms +1.9%
sort/quickSort/230 38.08 ms 38.78 ms +1.8%
sort/quickSort/240 41.49 ms 42.20 ms +1.7%
sort/quickSort/250 44.84 ms 45.85 ms +2.3%
sort/quickSort/260 48.43 ms 49.49 ms +2.2%
sort/quickSort/270 52.45 ms 53.34 ms +1.7%
sort/quickSort/280 56.40 ms 57.45 ms +1.9%
sort/quickSort/290 60.27 ms 61.46 ms +2.0%
sort/quickSort/300 64.63 ms 65.78 ms +1.8%
sort/quickSort/310 69.18 ms 70.43 ms +1.8%
sort/quickSort/320 73.75 ms 75.00 ms +1.7%
sort/quickSort/330 78.30 ms 79.97 ms +2.1%
sort/quickSort/340 83.74 ms 85.19 ms +1.7%
sort/quickSort/350 88.51 ms 89.97 ms +1.6%
sort/quickSort/360 93.50 ms 95.40 ms +2.0%
sort/quickSort/370 98.80 ms 100.6 ms +1.8%
sort/quickSort/380 104.3 ms 106.3 ms +1.9%
sort/quickSort/390 110.0 ms 112.6 ms +2.4%
sort/quickSort/400 115.9 ms 117.8 ms +1.6%
sort/quickSort/410 121.5 ms 123.7 ms +1.8%
sort/quickSort/420 128.1 ms 130.5 ms +1.9%
sort/quickSort/430 134.8 ms 136.6 ms +1.3%
sort/quickSort/440 140.7 ms 143.2 ms +1.8%
sort/quickSort/450 147.6 ms 150.5 ms +2.0%
sort/quickSort/460 154.2 ms 157.3 ms +2.0%
sort/quickSort/470 161.0 ms 163.9 ms +1.8%
sort/quickSort/480 169.2 ms 171.8 ms +1.5%
sort/quickSort/490 175.5 ms 179.2 ms +2.1%
sort/quickSort/500 182.6 ms 186.3 ms +2.0%
sum/compiled-from-Haskell/sum-right-builtin/10 8.408 μs 6.902 μs -17.9%
sum/compiled-from-Haskell/sum-right-builtin/50 39.07 μs 30.94 μs -20.8%
sum/compiled-from-Haskell/sum-right-builtin/100 78.97 μs 63.23 μs -19.9%
sum/compiled-from-Haskell/sum-right-builtin/500 430.8 μs 335.8 μs -22.1%
sum/compiled-from-Haskell/sum-right-builtin/1000 953.4 μs 727.0 μs -23.7%
sum/compiled-from-Haskell/sum-right-builtin/5000 6.706 ms 5.470 ms -18.4%
sum/compiled-from-Haskell/sum-right-builtin/10000 14.93 ms 12.09 ms -19.0%
sum/compiled-from-Haskell/sum-right-Scott/10 6.806 μs 7.090 μs +4.2%
sum/compiled-from-Haskell/sum-right-Scott/50 31.08 μs 32.72 μs +5.3%
sum/compiled-from-Haskell/sum-right-Scott/100 62.38 μs 64.87 μs +4.0%
sum/compiled-from-Haskell/sum-right-Scott/500 335.1 μs 346.9 μs +3.5%
sum/compiled-from-Haskell/sum-right-Scott/1000 738.5 μs 761.2 μs +3.1%
sum/compiled-from-Haskell/sum-right-Scott/5000 5.686 ms 5.803 ms +2.1%
sum/compiled-from-Haskell/sum-right-Scott/10000 14.09 ms 14.30 ms +1.5%
sum/compiled-from-Haskell/sum-right-data/10 20.26 μs 20.94 μs +3.4%
sum/compiled-from-Haskell/sum-right-data/50 97.55 μs 100.3 μs +2.8%
sum/compiled-from-Haskell/sum-right-data/100 194.4 μs 200.6 μs +3.2%
sum/compiled-from-Haskell/sum-right-data/500 1.108 ms 1.133 ms +2.3%
sum/compiled-from-Haskell/sum-right-data/1000 2.583 ms 2.627 ms +1.7%
sum/compiled-from-Haskell/sum-right-data/5000 15.03 ms 15.29 ms +1.7%
sum/compiled-from-Haskell/sum-right-data/10000 31.51 ms 32.02 ms +1.6%
sum/compiled-from-Haskell/sum-left-builtin/10 8.087 μs 6.800 μs -15.9%
sum/compiled-from-Haskell/sum-left-builtin/50 38.17 μs 30.32 μs -20.6%
sum/compiled-from-Haskell/sum-left-builtin/100 76.63 μs 61.03 μs -20.4%
sum/compiled-from-Haskell/sum-left-builtin/500 410.8 μs 325.3 μs -20.8%
sum/compiled-from-Haskell/sum-left-builtin/1000 939.8 μs 698.2 μs -25.7%
sum/compiled-from-Haskell/sum-left-builtin/5000 6.555 ms 5.196 ms -20.7%
sum/compiled-from-Haskell/sum-left-builtin/10000 14.34 ms 11.98 ms -16.5%
sum/compiled-from-Haskell/sum-left-Scott/10 6.501 μs 6.794 μs +4.5%
sum/compiled-from-Haskell/sum-left-Scott/50 30.28 μs 31.48 μs +4.0%
sum/compiled-from-Haskell/sum-left-Scott/100 60.98 μs 63.99 μs +4.9%
sum/compiled-from-Haskell/sum-left-Scott/500 321.0 μs 338.5 μs +5.5%
sum/compiled-from-Haskell/sum-left-Scott/1000 704.0 μs 735.0 μs +4.4%
sum/compiled-from-Haskell/sum-left-Scott/5000 5.784 ms 5.906 ms +2.1%
sum/compiled-from-Haskell/sum-left-Scott/10000 13.07 ms 13.33 ms +2.0%
sum/compiled-from-Haskell/sum-left-data/10 21.21 μs 21.49 μs +1.3%
sum/compiled-from-Haskell/sum-left-data/50 101.3 μs 103.5 μs +2.2%
sum/compiled-from-Haskell/sum-left-data/100 202.0 μs 207.1 μs +2.5%
sum/compiled-from-Haskell/sum-left-data/500 1.138 ms 1.160 ms +1.9%
sum/compiled-from-Haskell/sum-left-data/1000 2.622 ms 2.684 ms +2.4%
sum/compiled-from-Haskell/sum-left-data/5000 15.15 ms 15.40 ms +1.7%
sum/compiled-from-Haskell/sum-left-data/10000 31.55 ms 31.98 ms +1.4%
sum/hand-written-PLC/sum-right-builtin/10 8.369 μs 6.731 μs -19.6%
sum/hand-written-PLC/sum-right-builtin/50 37.27 μs 29.67 μs -20.4%
sum/hand-written-PLC/sum-right-builtin/100 74.17 μs 59.65 μs -19.6%
sum/hand-written-PLC/sum-right-builtin/500 377.5 μs 299.2 μs -20.7%
sum/hand-written-PLC/sum-right-builtin/1000 782.4 μs 616.1 μs -21.3%
sum/hand-written-PLC/sum-right-builtin/5000 4.648 ms 3.798 ms -18.3%
sum/hand-written-PLC/sum-right-builtin/10000 9.614 ms 7.805 ms -18.8%
sum/hand-written-PLC/sum-right-Scott/10 5.554 μs 5.688 μs +2.4%
sum/hand-written-PLC/sum-right-Scott/50 24.64 μs 25.03 μs +1.6%
sum/hand-written-PLC/sum-right-Scott/100 47.47 μs 49.16 μs +3.6%
sum/hand-written-PLC/sum-right-Scott/500 245.6 μs 252.2 μs +2.7%
sum/hand-written-PLC/sum-right-Scott/1000 511.1 μs 524.8 μs +2.7%
sum/hand-written-PLC/sum-right-Scott/5000 3.619 ms 3.702 ms +2.3%
sum/hand-written-PLC/sum-right-Scott/10000 8.063 ms 8.228 ms +2.0%
sum/hand-written-PLC/sum-left-builtin/10 8.588 μs 7.304 μs -15.0%
sum/hand-written-PLC/sum-left-builtin/50 39.65 μs 33.00 μs -16.8%
sum/hand-written-PLC/sum-left-builtin/100 78.33 μs 65.31 μs -16.6%
sum/hand-written-PLC/sum-left-builtin/500 378.5 μs 322.7 μs -14.7%
sum/hand-written-PLC/sum-left-builtin/1000 746.8 μs 643.2 μs -13.9%
sum/hand-written-PLC/sum-left-builtin/5000 3.682 ms 3.175 ms -13.8%
sum/hand-written-PLC/sum-left-builtin/10000 7.329 ms 6.345 ms -13.4%
sum/hand-written-PLC/sum-left-Scott/10 5.655 μs 5.783 μs +2.3%
sum/hand-written-PLC/sum-left-Scott/50 26.06 μs 26.21 μs +0.6%
sum/hand-written-PLC/sum-left-Scott/100 50.61 μs 51.95 μs +2.6%
sum/hand-written-PLC/sum-left-Scott/500 259.9 μs 268.3 μs +3.2%
sum/hand-written-PLC/sum-left-Scott/1000 528.2 μs 541.9 μs +2.6%
sum/hand-written-PLC/sum-left-Scott/5000 3.238 ms 3.330 ms +2.8%
sum/hand-written-PLC/sum-left-Scott/10000 6.701 ms 6.910 ms +3.1%

@effectfully
Copy link
Contributor Author

/benchmark plutus-benchmark:lists

Copy link
Contributor

github-actions bot commented Jan 9, 2024

Click here to check the status of your benchmark.

Copy link
Contributor

github-actions bot commented Jan 9, 2024

Comparing benchmark results of 'plutus-benchmark:lists' on 'b8a74e7b4' (base) and 'a8183017d' (PR)

Results table
Script b8a74e7 a818301 Change
sort/ghcSort/10 36.38 μs 37.28 μs +2.5%
sort/ghcSort/20 84.82 μs 86.25 μs +1.7%
sort/ghcSort/30 129.8 μs 132.1 μs +1.8%
sort/ghcSort/40 192.1 μs 196.6 μs +2.3%
sort/ghcSort/50 233.3 μs 237.1 μs +1.6%
sort/ghcSort/60 296.4 μs 303.8 μs +2.5%
sort/ghcSort/70 385.8 μs 393.7 μs +2.0%
sort/ghcSort/80 438.2 μs 448.5 μs +2.4%
sort/ghcSort/90 482.1 μs 493.3 μs +2.3%
sort/ghcSort/100 545.6 μs 558.3 μs +2.3%
sort/ghcSort/110 598.8 μs 612.0 μs +2.2%
sort/ghcSort/120 680.2 μs 695.2 μs +2.2%
sort/ghcSort/130 833.9 μs 856.0 μs +2.7%
sort/ghcSort/140 887.4 μs 906.3 μs +2.1%
sort/ghcSort/150 946.9 μs 966.9 μs +2.1%
sort/ghcSort/160 1.012 ms 1.030 ms +1.8%
sort/ghcSort/170 1.066 ms 1.088 ms +2.1%
sort/ghcSort/180 1.125 ms 1.152 ms +2.4%
sort/ghcSort/190 1.196 ms 1.216 ms +1.7%
sort/ghcSort/200 1.281 ms 1.305 ms +1.9%
sort/ghcSort/210 1.335 ms 1.360 ms +1.9%
sort/ghcSort/220 1.401 ms 1.427 ms +1.9%
sort/ghcSort/230 1.498 ms 1.530 ms +2.1%
sort/ghcSort/240 1.591 ms 1.616 ms +1.6%
sort/ghcSort/250 1.668 ms 1.702 ms +2.0%
sort/ghcSort/260 1.914 ms 1.957 ms +2.2%
sort/ghcSort/270 1.960 ms 2.010 ms +2.6%
sort/ghcSort/280 2.032 ms 2.081 ms +2.4%
sort/ghcSort/290 2.103 ms 2.141 ms +1.8%
sort/ghcSort/300 2.172 ms 2.224 ms +2.4%
sort/ghcSort/310 2.250 ms 2.292 ms +1.9%
sort/ghcSort/320 2.325 ms 2.367 ms +1.8%
sort/ghcSort/330 2.385 ms 2.433 ms +2.0%
sort/ghcSort/340 2.479 ms 2.533 ms +2.2%
sort/ghcSort/350 2.574 ms 2.572 ms -0.1%
sort/ghcSort/360 2.585 ms 2.636 ms +2.0%
sort/ghcSort/370 2.648 ms 2.708 ms +2.3%
sort/ghcSort/380 2.738 ms 2.805 ms +2.4%
sort/ghcSort/390 2.878 ms 2.933 ms +1.9%
sort/ghcSort/400 2.934 ms 3.013 ms +2.7%
sort/ghcSort/410 2.980 ms 3.036 ms +1.9%
sort/ghcSort/420 3.089 ms 3.150 ms +2.0%
sort/ghcSort/430 3.126 ms 3.200 ms +2.4%
sort/ghcSort/440 3.225 ms 3.297 ms +2.2%
sort/ghcSort/450 3.405 ms 3.471 ms +1.9%
sort/ghcSort/460 3.519 ms 3.514 ms -0.1%
sort/ghcSort/470 3.523 ms 3.601 ms +2.2%
sort/ghcSort/480 3.646 ms 3.728 ms +2.2%
sort/ghcSort/490 3.711 ms 3.809 ms +2.6%
sort/ghcSort/500 3.839 ms 3.909 ms +1.8%
sort/insertionSort/10 33.89 μs 34.55 μs +1.9%
sort/insertionSort/20 121.8 μs 123.2 μs +1.1%
sort/insertionSort/30 264.4 μs 267.9 μs +1.3%
sort/insertionSort/40 461.8 μs 472.8 μs +2.4%
sort/insertionSort/50 715.5 μs 732.7 μs +2.4%
sort/insertionSort/60 1.032 ms 1.052 ms +1.9%
sort/insertionSort/70 1.400 ms 1.428 ms +2.0%
sort/insertionSort/80 1.823 ms 1.859 ms +2.0%
sort/insertionSort/90 2.304 ms 2.355 ms +2.2%
sort/insertionSort/100 2.839 ms 2.889 ms +1.8%
sort/insertionSort/110 3.434 ms 3.499 ms +1.9%
sort/insertionSort/120 4.128 ms 4.164 ms +0.9%
sort/insertionSort/130 4.777 ms 4.875 ms +2.1%
sort/insertionSort/140 5.554 ms 5.632 ms +1.4%
sort/insertionSort/150 6.384 ms 6.492 ms +1.7%
sort/insertionSort/160 7.258 ms 7.412 ms +2.1%
sort/insertionSort/170 8.513 ms 8.338 ms -2.1%
sort/insertionSort/180 9.167 ms 9.358 ms +2.1%
sort/insertionSort/190 10.26 ms 10.43 ms +1.7%
sort/insertionSort/200 11.40 ms 11.55 ms +1.3%
sort/insertionSort/210 12.52 ms 12.77 ms +2.0%
sort/insertionSort/220 13.78 ms 13.97 ms +1.4%
sort/insertionSort/230 15.05 ms 15.32 ms +1.8%
sort/insertionSort/240 16.39 ms 16.66 ms +1.6%
sort/insertionSort/250 17.86 ms 18.08 ms +1.2%
sort/insertionSort/260 19.28 ms 19.60 ms +1.7%
sort/insertionSort/270 20.81 ms 21.12 ms +1.5%
sort/insertionSort/280 22.37 ms 22.73 ms +1.6%
sort/insertionSort/290 23.99 ms 24.45 ms +1.9%
sort/insertionSort/300 25.70 ms 26.27 ms +2.2%
sort/insertionSort/310 28.49 ms 28.05 ms -1.5%
sort/insertionSort/320 29.64 ms 29.86 ms +0.7%
sort/insertionSort/330 31.21 ms 31.81 ms +1.9%
sort/insertionSort/340 33.25 ms 33.74 ms +1.5%
sort/insertionSort/350 35.13 ms 35.70 ms +1.6%
sort/insertionSort/360 37.37 ms 37.91 ms +1.4%
sort/insertionSort/370 39.14 ms 40.09 ms +2.4%
sort/insertionSort/380 41.37 ms 42.35 ms +2.4%
sort/insertionSort/390 43.36 ms 44.63 ms +2.9%
sort/insertionSort/400 46.27 ms 47.00 ms +1.6%
sort/insertionSort/410 48.45 ms 49.26 ms +1.7%
sort/insertionSort/420 50.84 ms 52.04 ms +2.4%
sort/insertionSort/430 54.59 ms 54.39 ms -0.4%
sort/insertionSort/440 56.17 ms 57.15 ms +1.7%
sort/insertionSort/450 59.19 ms 59.65 ms +0.8%
sort/insertionSort/460 61.41 ms 62.41 ms +1.6%
sort/insertionSort/470 64.17 ms 64.86 ms +1.1%
sort/insertionSort/480 66.95 ms 68.01 ms +1.6%
sort/insertionSort/490 69.81 ms 70.82 ms +1.4%
sort/insertionSort/500 73.04 ms 73.71 ms +0.9%
sort/mergeSort/10 86.85 μs 90.09 μs +3.7%
sort/mergeSort/20 211.9 μs 220.3 μs +4.0%
sort/mergeSort/30 348.3 μs 363.4 μs +4.3%
sort/mergeSort/40 492.1 μs 513.6 μs +4.4%
sort/mergeSort/50 642.9 μs 668.3 μs +4.0%
sort/mergeSort/60 808.7 μs 840.9 μs +4.0%
sort/mergeSort/70 973.2 μs 1.008 ms +3.6%
sort/mergeSort/80 1.174 ms 1.185 ms +0.9%
sort/mergeSort/90 1.353 ms 1.366 ms +1.0%
sort/mergeSort/100 1.485 ms 1.546 ms +4.1%
sort/mergeSort/110 1.662 ms 1.729 ms +4.0%
sort/mergeSort/120 1.843 ms 1.927 ms +4.6%
sort/mergeSort/130 2.060 ms 2.139 ms +3.8%
sort/mergeSort/140 2.216 ms 2.307 ms +4.1%
sort/mergeSort/150 2.384 ms 2.488 ms +4.4%
sort/mergeSort/160 2.591 ms 2.702 ms +4.3%
sort/mergeSort/170 2.768 ms 2.877 ms +3.9%
sort/mergeSort/180 2.964 ms 3.091 ms +4.3%
sort/mergeSort/190 3.197 ms 3.299 ms +3.2%
sort/mergeSort/200 3.421 ms 3.472 ms +1.5%
sort/mergeSort/210 3.547 ms 3.706 ms +4.5%
sort/mergeSort/220 3.836 ms 3.892 ms +1.5%
sort/mergeSort/230 4.011 ms 4.109 ms +2.4%
sort/mergeSort/240 4.156 ms 4.326 ms +4.1%
sort/mergeSort/250 4.387 ms 4.559 ms +3.9%
sort/mergeSort/260 4.598 ms 4.789 ms +4.2%
sort/mergeSort/270 4.749 ms 4.964 ms +4.5%
sort/mergeSort/280 4.951 ms 5.179 ms +4.6%
sort/mergeSort/290 5.131 ms 5.349 ms +4.2%
sort/mergeSort/300 5.330 ms 5.559 ms +4.3%
sort/mergeSort/310 5.544 ms 5.777 ms +4.2%
sort/mergeSort/320 5.786 ms 6.023 ms +4.1%
sort/mergeSort/330 5.970 ms 6.218 ms +4.2%
sort/mergeSort/340 6.170 ms 6.442 ms +4.4%
sort/mergeSort/350 6.452 ms 6.675 ms +3.5%
sort/mergeSort/360 6.586 ms 6.833 ms +3.8%
sort/mergeSort/370 6.824 ms 7.090 ms +3.9%
sort/mergeSort/380 7.024 ms 7.302 ms +4.0%
sort/mergeSort/390 7.481 ms 7.560 ms +1.1%
sort/mergeSort/400 7.435 ms 7.720 ms +3.8%
sort/mergeSort/410 7.693 ms 7.987 ms +3.8%
sort/mergeSort/420 7.896 ms 8.233 ms +4.3%
sort/mergeSort/430 8.129 ms 8.487 ms +4.4%
sort/mergeSort/440 8.299 ms 8.641 ms +4.1%
sort/mergeSort/450 8.535 ms 8.893 ms +4.2%
sort/mergeSort/460 8.786 ms 9.135 ms +4.0%
sort/mergeSort/470 9.025 ms 9.375 ms +3.9%
sort/mergeSort/480 9.234 ms 9.617 ms +4.1%
sort/mergeSort/490 9.460 ms 9.882 ms +4.5%
sort/mergeSort/500 9.739 ms 10.13 ms +4.0%
sort/quickSort/10 79.54 μs 80.60 μs +1.3%
sort/quickSort/20 291.9 μs 297.3 μs +1.8%
sort/quickSort/30 640.5 μs 658.1 μs +2.7%
sort/quickSort/40 1.149 ms 1.172 ms +2.0%
sort/quickSort/50 1.800 ms 1.833 ms +1.8%
sort/quickSort/60 2.603 ms 2.653 ms +1.9%
sort/quickSort/70 3.543 ms 3.619 ms +2.1%
sort/quickSort/80 4.646 ms 4.746 ms +2.2%
sort/quickSort/90 5.894 ms 6.028 ms +2.3%
sort/quickSort/100 7.189 ms 7.350 ms +2.2%
sort/quickSort/110 8.758 ms 8.943 ms +2.1%
sort/quickSort/120 10.39 ms 10.62 ms +2.2%
sort/quickSort/130 12.21 ms 12.48 ms +2.2%
sort/quickSort/140 14.01 ms 14.31 ms +2.1%
sort/quickSort/150 16.14 ms 16.56 ms +2.6%
sort/quickSort/160 18.30 ms 18.70 ms +2.2%
sort/quickSort/170 20.64 ms 21.29 ms +3.1%
sort/quickSort/180 23.23 ms 23.72 ms +2.1%
sort/quickSort/190 25.83 ms 26.43 ms +2.3%
sort/quickSort/200 28.53 ms 29.17 ms +2.2%
sort/quickSort/210 31.45 ms 32.21 ms +2.4%
sort/quickSort/220 34.52 ms 35.40 ms +2.5%
sort/quickSort/230 37.69 ms 38.76 ms +2.8%
sort/quickSort/240 41.06 ms 42.03 ms +2.4%
sort/quickSort/250 44.44 ms 45.68 ms +2.8%
sort/quickSort/260 48.16 ms 49.31 ms +2.4%
sort/quickSort/270 51.96 ms 53.13 ms +2.3%
sort/quickSort/280 55.90 ms 57.30 ms +2.5%
sort/quickSort/290 59.78 ms 61.32 ms +2.6%
sort/quickSort/300 64.06 ms 65.64 ms +2.5%
sort/quickSort/310 68.48 ms 70.63 ms +3.1%
sort/quickSort/320 73.15 ms 75.16 ms +2.7%
sort/quickSort/330 77.58 ms 79.88 ms +3.0%
sort/quickSort/340 82.90 ms 85.33 ms +2.9%
sort/quickSort/350 87.55 ms 89.98 ms +2.8%
sort/quickSort/360 92.70 ms 95.34 ms +2.8%
sort/quickSort/370 98.00 ms 100.9 ms +3.0%
sort/quickSort/380 103.4 ms 106.2 ms +2.7%
sort/quickSort/390 109.0 ms 112.0 ms +2.8%
sort/quickSort/400 115.0 ms 117.8 ms +2.4%
sort/quickSort/410 120.6 ms 123.9 ms +2.7%
sort/quickSort/420 127.0 ms 130.6 ms +2.8%
sort/quickSort/430 133.6 ms 137.3 ms +2.8%
sort/quickSort/440 139.8 ms 143.5 ms +2.6%
sort/quickSort/450 145.7 ms 149.9 ms +2.9%
sort/quickSort/460 152.9 ms 157.4 ms +2.9%
sort/quickSort/470 159.3 ms 163.4 ms +2.6%
sort/quickSort/480 167.0 ms 172.0 ms +3.0%
sort/quickSort/490 173.8 ms 179.4 ms +3.2%
sort/quickSort/500 181.4 ms 185.9 ms +2.5%
sum/compiled-from-Haskell/sum-right-builtin/10 8.346 μs 6.921 μs -17.1%
sum/compiled-from-Haskell/sum-right-builtin/50 39.07 μs 31.05 μs -20.5%
sum/compiled-from-Haskell/sum-right-builtin/100 78.52 μs 63.30 μs -19.4%
sum/compiled-from-Haskell/sum-right-builtin/500 428.3 μs 335.6 μs -21.6%
sum/compiled-from-Haskell/sum-right-builtin/1000 945.5 μs 724.9 μs -23.3%
sum/compiled-from-Haskell/sum-right-builtin/5000 6.679 ms 5.439 ms -18.6%
sum/compiled-from-Haskell/sum-right-builtin/10000 14.82 ms 12.01 ms -19.0%
sum/compiled-from-Haskell/sum-right-Scott/10 6.750 μs 7.043 μs +4.3%
sum/compiled-from-Haskell/sum-right-Scott/50 30.92 μs 32.52 μs +5.2%
sum/compiled-from-Haskell/sum-right-Scott/100 61.88 μs 64.92 μs +4.9%
sum/compiled-from-Haskell/sum-right-Scott/500 334.1 μs 347.2 μs +3.9%
sum/compiled-from-Haskell/sum-right-Scott/1000 733.0 μs 762.3 μs +4.0%
sum/compiled-from-Haskell/sum-right-Scott/5000 5.648 ms 5.810 ms +2.9%
sum/compiled-from-Haskell/sum-right-Scott/10000 13.90 ms 14.27 ms +2.7%
sum/compiled-from-Haskell/sum-right-data/10 20.41 μs 21.06 μs +3.2%
sum/compiled-from-Haskell/sum-right-data/50 98.22 μs 100.4 μs +2.2%
sum/compiled-from-Haskell/sum-right-data/100 196.7 μs 200.4 μs +1.9%
sum/compiled-from-Haskell/sum-right-data/500 1.115 ms 1.134 ms +1.7%
sum/compiled-from-Haskell/sum-right-data/1000 2.599 ms 2.633 ms +1.3%
sum/compiled-from-Haskell/sum-right-data/5000 15.04 ms 15.23 ms +1.3%
sum/compiled-from-Haskell/sum-right-data/10000 31.79 ms 32.13 ms +1.1%
sum/compiled-from-Haskell/sum-left-builtin/10 7.973 μs 6.799 μs -14.7%
sum/compiled-from-Haskell/sum-left-builtin/50 38.08 μs 30.15 μs -20.8%
sum/compiled-from-Haskell/sum-left-builtin/100 76.03 μs 60.71 μs -20.1%
sum/compiled-from-Haskell/sum-left-builtin/500 408.8 μs 323.2 μs -20.9%
sum/compiled-from-Haskell/sum-left-builtin/1000 912.4 μs 699.5 μs -23.3%
sum/compiled-from-Haskell/sum-left-builtin/5000 6.521 ms 5.173 ms -20.7%
sum/compiled-from-Haskell/sum-left-builtin/10000 14.25 ms 11.95 ms -16.1%
sum/compiled-from-Haskell/sum-left-Scott/10 6.445 μs 6.822 μs +5.8%
sum/compiled-from-Haskell/sum-left-Scott/50 30.03 μs 31.37 μs +4.5%
sum/compiled-from-Haskell/sum-left-Scott/100 60.46 μs 63.86 μs +5.6%
sum/compiled-from-Haskell/sum-left-Scott/500 320.1 μs 335.4 μs +4.8%
sum/compiled-from-Haskell/sum-left-Scott/1000 699.0 μs 735.0 μs +5.2%
sum/compiled-from-Haskell/sum-left-Scott/5000 5.750 ms 5.891 ms +2.5%
sum/compiled-from-Haskell/sum-left-Scott/10000 13.01 ms 13.34 ms +2.5%
sum/compiled-from-Haskell/sum-left-data/10 21.46 μs 21.42 μs -0.2%
sum/compiled-from-Haskell/sum-left-data/50 101.8 μs 104.3 μs +2.5%
sum/compiled-from-Haskell/sum-left-data/100 203.4 μs 207.7 μs +2.1%
sum/compiled-from-Haskell/sum-left-data/500 1.146 ms 1.164 ms +1.6%
sum/compiled-from-Haskell/sum-left-data/1000 2.651 ms 2.681 ms +1.1%
sum/compiled-from-Haskell/sum-left-data/5000 15.21 ms 15.35 ms +0.9%
sum/compiled-from-Haskell/sum-left-data/10000 31.69 ms 32.06 ms +1.2%
sum/hand-written-PLC/sum-right-builtin/10 8.349 μs 6.786 μs -18.7%
sum/hand-written-PLC/sum-right-builtin/50 37.06 μs 29.77 μs -19.7%
sum/hand-written-PLC/sum-right-builtin/100 73.77 μs 60.21 μs -18.4%
sum/hand-written-PLC/sum-right-builtin/500 374.7 μs 301.1 μs -19.6%
sum/hand-written-PLC/sum-right-builtin/1000 778.8 μs 610.8 μs -21.6%
sum/hand-written-PLC/sum-right-builtin/5000 4.626 ms 3.810 ms -17.6%
sum/hand-written-PLC/sum-right-builtin/10000 9.530 ms 7.806 ms -18.1%
sum/hand-written-PLC/sum-right-Scott/10 5.538 μs 5.759 μs +4.0%
sum/hand-written-PLC/sum-right-Scott/50 24.58 μs 25.52 μs +3.8%
sum/hand-written-PLC/sum-right-Scott/100 47.47 μs 48.92 μs +3.1%
sum/hand-written-PLC/sum-right-Scott/500 244.8 μs 249.3 μs +1.8%
sum/hand-written-PLC/sum-right-Scott/1000 510.0 μs 514.9 μs +1.0%
sum/hand-written-PLC/sum-right-Scott/5000 3.613 ms 3.692 ms +2.2%
sum/hand-written-PLC/sum-right-Scott/10000 8.038 ms 8.244 ms +2.6%
sum/hand-written-PLC/sum-left-builtin/10 8.601 μs 7.319 μs -14.9%
sum/hand-written-PLC/sum-left-builtin/50 39.24 μs 32.57 μs -17.0%
sum/hand-written-PLC/sum-left-builtin/100 77.29 μs 65.64 μs -15.1%
sum/hand-written-PLC/sum-left-builtin/500 376.4 μs 319.5 μs -15.1%
sum/hand-written-PLC/sum-left-builtin/1000 746.5 μs 643.1 μs -13.9%
sum/hand-written-PLC/sum-left-builtin/5000 3.680 ms 3.184 ms -13.5%
sum/hand-written-PLC/sum-left-builtin/10000 7.344 ms 6.337 ms -13.7%
sum/hand-written-PLC/sum-left-Scott/10 5.629 μs 5.874 μs +4.4%
sum/hand-written-PLC/sum-left-Scott/50 26.01 μs 26.24 μs +0.9%
sum/hand-written-PLC/sum-left-Scott/100 51.33 μs 52.45 μs +2.2%
sum/hand-written-PLC/sum-left-Scott/500 260.0 μs 264.6 μs +1.8%
sum/hand-written-PLC/sum-left-Scott/1000 528.7 μs 545.1 μs +3.1%
sum/hand-written-PLC/sum-left-Scott/5000 3.234 ms 3.328 ms +2.9%
sum/hand-written-PLC/sum-left-Scott/10000 6.714 ms 6.907 ms +2.9%

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Builtins Do not merge EXPERIMENT Experiments that we probably don't want to merge
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant