plutus
plutus copied to clipboard
[Builtins] Add support for pattern matching builtins
This PR is an EXPERIMENT, it's not intended for merging, so don't.
It's a proof-of-concept, there's undefined
in the code and whatnot.
The main change is replacing
data BuiltinRuntime val
= BuiltinResult ExBudget ~(MakeKnownM val)
| <...>
with
data BuiltinRuntime val
= BuiltinResult ExBudget ~(MakeKnownM (HeadSpine val))
| <...>
where HeadSpine
is a fancy name for NonEmpty
:
data Spine a
= NilSpine
| ConsSpine a (Spine a)
data HeadSpine a
= HeadSpine a (Spine a)
(we define a separate type, because we want strictness, and you don't see any bangs, because it's in a module with StrictData
enabled).
The idea is that a builtin application can return a function applied to a bunch of arguments, which is exactly what we need to be able to express caseList
caseList xs0 f z = case xs0 of
[] -> z
x:xs -> f x xs
as a builtin:
-- | Package a function and a list of its arguments as a 'HeadSpine'.
headSpine :: Opaque val ab -> [val] -> Opaque (HeadSpine val) b
headSpine (Opaque f) = Opaque . HeadSpine f . foldr ConsSpine NilSpine
instance uni ~ DefaultUni => ToBuiltinMeaning uni DefaultFun where
<...>
toBuiltinMeaning _ver CaseList =
makeBuiltinMeaning
caseListPlc
(\_ _ _ _ -> ExBudget 1 0) -- TODO.
where
caseListPlc
:: SomeConstant uni [a]
-> Opaque val b
-> Opaque val (a -> [a] -> b)
-> EvaluationResult (Opaque (HeadSpine val) b)
caseListPlc (SomeConstant (Some (ValueOf uniListA xs0))) z f = do
DefaultUniList uniA <- pure uniListA
pure $ case xs0 of
[] -> headSpine z [] -- [1]
x : xs -> headSpine f [fromValueOf uniA x, fromValueOf uniListA xs] -- [2]
Being able to express [1] (representing z
) and [2] (representing f x xs
) is precisely what this PR enables.
Adding support for the new functionality to the CEK machine is trivial. All we need is a way to push a Spine
of arguments onto the context:
pushArgs :: Spine (CekValue uni fun ann) -> Context uni fun ann -> Context uni fun ann
pushArgs args ctx = foldr FrameAwaitFunValue ctx args
and a HeadSpine
version of returnCek
:
returnCekHeadSpine
:: Context uni fun ann
-> HeadSpine (CekValue uni fun ann)
-> CekM uni fun s (Term NamedDeBruijn uni fun ())
returnCekHeadSpine ctx (HeadSpine f xs) = returnCek (pushArgs xs ctx) f
Then replacing
MakeKnownSuccess x -> returnCek
with
MakeKnownSuccess fXs -> returnCekNonEmpty ctx fXs
(and similarly for MakeKnownSuccessWithLogs
) will do the trick.
We used to define caseList
in terms of IfThenElse
, NullList
and either HeadList
or TailList
depending on the result of NullList
, i.e. three builtin calls in the worst and in the best case. Then we introduced ChooseList
, which replaced both IfThenElse
and NullList
in caseList
thus bringing total amount of builtin calls down to 2 in all cases. This turned out to have a substantial impact on performance. This PR allows us to bring total number of builtin calls per caseList
invokation down to 1 -- the CaseList
builtin itself.
If we're going to officially support encoding data types using Data
the ideas described here may be worthwhile.
I'm a bit confused about what this would entail for the PLC language. Would there be a new builtin-function? would case be a new language construct?
I'm a bit confused about what this would entail for the PLC language. Would there be a new builtin-function? would case be a new language construct?
No new language constructs. New built-in functions (caseList
in the description of the PR, plus caseData
in the PR), plus a bit of changes to the builtins machinery and the CEK machine (see in the PR, it's a surprisingly small amount of changes).
I saw the PR, but it's about code and I don't fully understand the consequences of the code for PLC. What would be the type of caseList
?
What would be the type of
caseList
?
It's in the PR, the plutus-core/plutus-core/test/TypeSynthesis/Golden/CaseList.plc.golden
file (there's a golden file with a type signature for every builtin, including the proposed ones):
(all
a
(type)
(all
b
(type)
(fun [ (con list) a ] (fun b (fun (fun a (fun [ (con list) a ] b)) b)))
)
)
or if you're not a Cylon:
all a b. list a -> b -> (a -> list a -> b) -> b
This is the type of the built-in function, i.e. what this PR proposed to implement support for.
We also have a function that is confusingly named the same (the one in stdlib
), but has all b
and the subsequent list a
swapped, because it's some extremely outdated legacy code that was introduced in order to make it easy to replace unwrap
-based code with code that uses pattern matching. Basically, if you see StdLib
in the name of a file in this PR, ignore it, it's not really useful for anything and it's not used other than for tests. I apologize for the confusion, I should've specified that stdlib
stuff should be ignored, it was just for me to test that the proposed builtins type check and evaluate fine.
We will need to decide what to do with the spec and metatheory regarding the types of builtins
I think types aren't complicated? You just add ->
to the type of signatures of builtins and that's it. Or am I missing something?
Specifying the operational semantics of builtins does sound somewhat complicated. "So if f
is an argument to a built-in function, then you can return f x
, but not f (f x)
" -- pretty stupid.
Which is why my original plan was to allow arbitrary trees of application (in the sense of Data.Tree.Tree
), not just a head and a spine-as-a-list. That is harder to cost (I still think it's not a big deal and is much easier than, say, equalsData
for the kind of builtins that we may want to represent that way), requires extensive discussion on why I believe this is useful (in particular, Michael doesn't trust me that I can define much faster unsafeFromBuiltinData
this way and maybe he's right) and is generally more complicated, so I thought it would be worth starting with a simpler but still useful thing first, hence this PR.
Which is why my original plan was to allow arbitrary trees of application (in the sense of Data.Tree.Tree), not just a head and a spine-as-a-list.
Is the "real" answer here that we can return any term that introduces no new variable binders? e.g. introducing force
/delay
/constr
all also seem fine, because it's adding new binders that really throws us off (because then we'd need to shift any binders in the input terms depending on where we put them, etc.
Of course, our arguments are values and not terms, so we can't actually construct a term, instead we have to construct an evaluation continuation or something, so that does make things more complicated. And maybe the most useful and straightforward evaluation continuation is just a spine of applications. Although even then... can I do this?
\h a -> h 1 a
or this?
\h a -> h (addInteger 1 2) a
/benchmark plutus-benchmark:nofib
Click here to check the status of your benchmark.
/benchmark plutus-benchmark:lists
Comparing benchmark results of 'plutus-benchmark:nofib' on '159e5bd8e' (base) and '26b546339' (PR)
Results table
Script | 159e5bd | 26b5463 | Change |
---|---|---|---|
clausify/formula1 | 4.687 ms | 4.846 ms | +3.4% |
clausify/formula2 | 6.178 ms | 6.361 ms | +3.0% |
clausify/formula3 | 16.79 ms | 17.27 ms | +2.9% |
clausify/formula4 | 35.17 ms | 36.24 ms | +3.0% |
clausify/formula5 | 81.37 ms | 83.75 ms | +2.9% |
knights/4x4 | 28.01 ms | 28.78 ms | +2.7% |
knights/6x6 | 78.50 ms | 80.69 ms | +2.8% |
knights/8x8 | 158.5 ms | 162.7 ms | +2.6% |
primetest/05digits | 14.66 ms | 15.10 ms | +3.0% |
primetest/08digits | 24.28 ms | 25.22 ms | +3.9% |
primetest/10digits | 29.90 ms | 31.08 ms | +3.9% |
primetest/20digits | 67.11 ms | 69.09 ms | +3.0% |
primetest/30digits | 105.1 ms | 108.0 ms | +2.8% |
primetest/40digits | 145.3 ms | 150.4 ms | +3.5% |
primetest/50digits | 155.9 ms | 161.5 ms | +3.6% |
queens4x4/bt | 6.925 ms | 7.112 ms | +2.7% |
queens4x4/bm | 8.811 ms | 9.065 ms | +2.9% |
queens4x4/bjbt1 | 8.481 ms | 8.738 ms | +3.0% |
queens4x4/bjbt2 | 7.864 ms | 8.116 ms | +3.2% |
queens4x4/fc | 18.42 ms | 19.03 ms | +3.3% |
queens5x5/bt | 92.60 ms | 95.18 ms | +2.8% |
queens5x5/bm | 98.97 ms | 101.6 ms | +2.7% |
queens5x5/bjbt1 | 109.1 ms | 112.0 ms | +2.7% |
queens5x5/bjbt2 | 105.2 ms | 108.3 ms | +2.9% |
queens5x5/fc | 235.0 ms | 243.0 ms | +3.4% |
Click here to check the status of your benchmark.
+3% on average on the builtins-heavy nofib
benchmarks. Not too bad I guess and maybe I could squeeze some performance out of it.
Comparing benchmark results of 'plutus-benchmark:lists' on '159e5bd8e' (base) and '26b546339' (PR)
Results table
Script | 159e5bd | 26b5463 | Change |
---|---|---|---|
sort/ghcSort/10 | 47.86 μs | 47.92 μs | +0.1% |
sort/ghcSort/20 | 110.5 μs | 109.3 μs | -1.1% |
sort/ghcSort/30 | 170.0 μs | 170.3 μs | +0.2% |
sort/ghcSort/40 | 249.9 μs | 250.5 μs | +0.2% |
sort/ghcSort/50 | 311.3 μs | 308.4 μs | -0.9% |
sort/ghcSort/60 | 388.2 μs | 387.4 μs | -0.2% |
sort/ghcSort/70 | 505.8 μs | 503.8 μs | -0.4% |
sort/ghcSort/80 | 571.8 μs | 568.5 μs | -0.6% |
sort/ghcSort/90 | 633.0 μs | 629.9 μs | -0.5% |
sort/ghcSort/100 | 712.1 μs | 710.6 μs | -0.2% |
sort/ghcSort/110 | 783.1 μs | 778.3 μs | -0.6% |
sort/ghcSort/120 | 885.6 μs | 882.3 μs | -0.4% |
sort/ghcSort/130 | 1.086 ms | 1.086 ms | 0.0% |
sort/ghcSort/140 | 1.152 ms | 1.149 ms | -0.3% |
sort/ghcSort/150 | 1.232 ms | 1.232 ms | 0.0% |
sort/ghcSort/160 | 1.311 ms | 1.317 ms | +0.5% |
sort/ghcSort/170 | 1.392 ms | 1.388 ms | -0.3% |
sort/ghcSort/180 | 1.461 ms | 1.463 ms | +0.1% |
sort/ghcSort/190 | 1.551 ms | 1.548 ms | -0.2% |
sort/ghcSort/200 | 1.661 ms | 1.656 ms | -0.3% |
sort/ghcSort/210 | 1.730 ms | 1.731 ms | +0.1% |
sort/ghcSort/220 | 1.813 ms | 1.809 ms | -0.2% |
sort/ghcSort/230 | 1.945 ms | 1.938 ms | -0.4% |
sort/ghcSort/240 | 2.052 ms | 2.053 ms | +0.0% |
sort/ghcSort/250 | 2.151 ms | 2.149 ms | -0.1% |
sort/ghcSort/260 | 2.477 ms | 2.470 ms | -0.3% |
sort/ghcSort/270 | 2.555 ms | 2.538 ms | -0.7% |
sort/ghcSort/280 | 2.621 ms | 2.616 ms | -0.2% |
sort/ghcSort/290 | 2.713 ms | 2.713 ms | 0.0% |
sort/ghcSort/300 | 2.807 ms | 2.804 ms | -0.1% |
sort/ghcSort/310 | 2.909 ms | 2.896 ms | -0.4% |
sort/ghcSort/320 | 2.983 ms | 2.996 ms | +0.4% |
sort/ghcSort/330 | 3.087 ms | 3.075 ms | -0.4% |
sort/ghcSort/340 | 3.172 ms | 3.165 ms | -0.2% |
sort/ghcSort/350 | 3.244 ms | 3.244 ms | 0.0% |
sort/ghcSort/360 | 3.336 ms | 3.330 ms | -0.2% |
sort/ghcSort/370 | 3.437 ms | 3.425 ms | -0.3% |
sort/ghcSort/380 | 3.549 ms | 3.536 ms | -0.4% |
sort/ghcSort/390 | 3.686 ms | 3.706 ms | +0.5% |
sort/ghcSort/400 | 3.786 ms | 3.802 ms | +0.4% |
sort/ghcSort/410 | 3.845 ms | 3.842 ms | -0.1% |
sort/ghcSort/420 | 3.972 ms | 3.982 ms | +0.3% |
sort/ghcSort/430 | 4.038 ms | 4.039 ms | +0.0% |
sort/ghcSort/440 | 4.153 ms | 4.152 ms | -0.0% |
sort/ghcSort/450 | 4.381 ms | 4.378 ms | -0.1% |
sort/ghcSort/460 | 4.434 ms | 4.440 ms | +0.1% |
sort/ghcSort/470 | 4.549 ms | 4.541 ms | -0.2% |
sort/ghcSort/480 | 4.691 ms | 4.687 ms | -0.1% |
sort/ghcSort/490 | 4.785 ms | 4.792 ms | +0.1% |
sort/ghcSort/500 | 4.922 ms | 4.920 ms | -0.0% |
sort/insertionSort/10 | 44.37 μs | 44.51 μs | +0.3% |
sort/insertionSort/20 | 160.6 μs | 160.0 μs | -0.4% |
sort/insertionSort/30 | 351.9 μs | 349.2 μs | -0.8% |
sort/insertionSort/40 | 614.9 μs | 609.2 μs | -0.9% |
sort/insertionSort/50 | 951.2 μs | 943.6 μs | -0.8% |
sort/insertionSort/60 | 1.373 ms | 1.360 ms | -0.9% |
sort/insertionSort/70 | 1.854 ms | 1.840 ms | -0.8% |
sort/insertionSort/80 | 2.414 ms | 2.399 ms | -0.6% |
sort/insertionSort/90 | 3.060 ms | 3.025 ms | -1.1% |
sort/insertionSort/100 | 3.772 ms | 3.725 ms | -1.2% |
sort/insertionSort/110 | 4.532 ms | 4.505 ms | -0.6% |
sort/insertionSort/120 | 5.401 ms | 5.361 ms | -0.7% |
sort/insertionSort/130 | 6.370 ms | 6.289 ms | -1.3% |
sort/insertionSort/140 | 7.401 ms | 7.267 ms | -1.8% |
sort/insertionSort/150 | 8.421 ms | 8.380 ms | -0.5% |
sort/insertionSort/160 | 9.591 ms | 9.520 ms | -0.7% |
sort/insertionSort/170 | 10.87 ms | 10.77 ms | -0.9% |
sort/insertionSort/180 | 12.21 ms | 12.02 ms | -1.6% |
sort/insertionSort/190 | 13.59 ms | 13.41 ms | -1.3% |
sort/insertionSort/200 | 15.06 ms | 14.94 ms | -0.8% |
sort/insertionSort/210 | 16.58 ms | 16.44 ms | -0.8% |
sort/insertionSort/220 | 18.11 ms | 18.06 ms | -0.3% |
sort/insertionSort/230 | 19.86 ms | 19.83 ms | -0.2% |
sort/insertionSort/240 | 21.64 ms | 21.50 ms | -0.6% |
sort/insertionSort/250 | 23.46 ms | 23.42 ms | -0.2% |
sort/insertionSort/260 | 25.47 ms | 25.22 ms | -1.0% |
sort/insertionSort/270 | 27.50 ms | 27.29 ms | -0.8% |
sort/insertionSort/280 | 29.54 ms | 29.32 ms | -0.7% |
sort/insertionSort/290 | 31.80 ms | 31.63 ms | -0.5% |
sort/insertionSort/300 | 34.07 ms | 33.71 ms | -1.1% |
sort/insertionSort/310 | 36.26 ms | 35.99 ms | -0.7% |
sort/insertionSort/320 | 38.87 ms | 38.63 ms | -0.6% |
sort/insertionSort/330 | 41.25 ms | 40.94 ms | -0.8% |
sort/insertionSort/340 | 43.74 ms | 43.50 ms | -0.5% |
sort/insertionSort/350 | 46.44 ms | 46.04 ms | -0.9% |
sort/insertionSort/360 | 49.12 ms | 49.00 ms | -0.2% |
sort/insertionSort/370 | 52.09 ms | 51.63 ms | -0.9% |
sort/insertionSort/380 | 54.98 ms | 54.85 ms | -0.2% |
sort/insertionSort/390 | 58.09 ms | 57.84 ms | -0.4% |
sort/insertionSort/400 | 60.70 ms | 60.81 ms | +0.2% |
sort/insertionSort/410 | 64.34 ms | 63.85 ms | -0.8% |
sort/insertionSort/420 | 67.28 ms | 66.90 ms | -0.6% |
sort/insertionSort/430 | 70.62 ms | 70.72 ms | +0.1% |
sort/insertionSort/440 | 73.90 ms | 73.61 ms | -0.4% |
sort/insertionSort/450 | 77.43 ms | 76.98 ms | -0.6% |
sort/insertionSort/460 | 81.24 ms | 81.12 ms | -0.1% |
sort/insertionSort/470 | 84.72 ms | 83.99 ms | -0.9% |
sort/insertionSort/480 | 88.27 ms | 87.73 ms | -0.6% |
sort/insertionSort/490 | 92.17 ms | 91.94 ms | -0.2% |
sort/insertionSort/500 | 95.69 ms | 96.09 ms | +0.4% |
sort/mergeSort/10 | 115.4 μs | 114.3 μs | -1.0% |
sort/mergeSort/20 | 277.6 μs | 275.5 μs | -0.8% |
sort/mergeSort/30 | 457.4 μs | 456.3 μs | -0.2% |
sort/mergeSort/40 | 650.0 μs | 650.7 μs | +0.1% |
sort/mergeSort/50 | 843.0 μs | 843.6 μs | +0.1% |
sort/mergeSort/60 | 1.062 ms | 1.067 ms | +0.5% |
sort/mergeSort/70 | 1.275 ms | 1.282 ms | +0.5% |
sort/mergeSort/80 | 1.504 ms | 1.498 ms | -0.4% |
sort/mergeSort/90 | 1.721 ms | 1.733 ms | +0.7% |
sort/mergeSort/100 | 1.945 ms | 1.956 ms | +0.6% |
sort/mergeSort/110 | 2.175 ms | 2.181 ms | +0.3% |
sort/mergeSort/120 | 2.430 ms | 2.429 ms | -0.0% |
sort/mergeSort/130 | 2.697 ms | 2.712 ms | +0.6% |
sort/mergeSort/140 | 2.904 ms | 2.917 ms | +0.4% |
sort/mergeSort/150 | 3.131 ms | 3.142 ms | +0.4% |
sort/mergeSort/160 | 3.411 ms | 3.418 ms | +0.2% |
sort/mergeSort/170 | 3.638 ms | 3.644 ms | +0.2% |
sort/mergeSort/180 | 3.893 ms | 3.910 ms | +0.4% |
sort/mergeSort/190 | 4.153 ms | 4.176 ms | +0.6% |
sort/mergeSort/200 | 4.391 ms | 4.420 ms | +0.7% |
sort/mergeSort/210 | 4.667 ms | 4.695 ms | +0.6% |
sort/mergeSort/220 | 4.914 ms | 4.928 ms | +0.3% |
sort/mergeSort/230 | 5.181 ms | 5.224 ms | +0.8% |
sort/mergeSort/240 | 5.447 ms | 5.475 ms | +0.5% |
sort/mergeSort/250 | 5.763 ms | 5.782 ms | +0.3% |
sort/mergeSort/260 | 6.020 ms | 6.042 ms | +0.4% |
sort/mergeSort/270 | 6.249 ms | 6.265 ms | +0.3% |
sort/mergeSort/280 | 6.494 ms | 6.555 ms | +0.9% |
sort/mergeSort/290 | 6.746 ms | 6.773 ms | +0.4% |
sort/mergeSort/300 | 6.991 ms | 7.031 ms | +0.6% |
sort/mergeSort/310 | 7.261 ms | 7.319 ms | +0.8% |
sort/mergeSort/320 | 7.603 ms | 7.657 ms | +0.7% |
sort/mergeSort/330 | 7.833 ms | 7.845 ms | +0.2% |
sort/mergeSort/340 | 8.095 ms | 8.148 ms | +0.7% |
sort/mergeSort/350 | 8.392 ms | 8.477 ms | +1.0% |
sort/mergeSort/360 | 8.700 ms | 8.720 ms | +0.2% |
sort/mergeSort/370 | 8.970 ms | 9.012 ms | +0.5% |
sort/mergeSort/380 | 9.291 ms | 9.336 ms | +0.5% |
sort/mergeSort/390 | 9.572 ms | 9.610 ms | +0.4% |
sort/mergeSort/400 | 9.767 ms | 9.833 ms | +0.7% |
sort/mergeSort/410 | 10.11 ms | 10.13 ms | +0.2% |
sort/mergeSort/420 | 10.39 ms | 10.43 ms | +0.4% |
sort/mergeSort/430 | 10.71 ms | 10.75 ms | +0.4% |
sort/mergeSort/440 | 10.92 ms | 10.97 ms | +0.5% |
sort/mergeSort/450 | 11.17 ms | 11.28 ms | +1.0% |
sort/mergeSort/460 | 11.50 ms | 11.62 ms | +1.0% |
sort/mergeSort/470 | 11.79 ms | 11.91 ms | +1.0% |
sort/mergeSort/480 | 12.12 ms | 12.19 ms | +0.6% |
sort/mergeSort/490 | 12.46 ms | 12.53 ms | +0.6% |
sort/mergeSort/500 | 12.78 ms | 12.87 ms | +0.7% |
sort/quickSort/10 | 106.6 μs | 102.7 μs | -3.7% |
sort/quickSort/20 | 390.7 μs | 380.6 μs | -2.6% |
sort/quickSort/30 | 853.0 μs | 835.3 μs | -2.1% |
sort/quickSort/40 | 1.518 ms | 1.485 ms | -2.2% |
sort/quickSort/50 | 2.374 ms | 2.342 ms | -1.3% |
sort/quickSort/60 | 3.415 ms | 3.370 ms | -1.3% |
sort/quickSort/70 | 4.658 ms | 4.571 ms | -1.9% |
sort/quickSort/80 | 6.100 ms | 5.990 ms | -1.8% |
sort/quickSort/90 | 7.739 ms | 7.589 ms | -1.9% |
sort/quickSort/100 | 9.455 ms | 9.276 ms | -1.9% |
sort/quickSort/110 | 11.48 ms | 11.30 ms | -1.6% |
sort/quickSort/120 | 13.62 ms | 13.45 ms | -1.2% |
sort/quickSort/130 | 16.03 ms | 15.77 ms | -1.6% |
sort/quickSort/140 | 18.41 ms | 18.13 ms | -1.5% |
sort/quickSort/150 | 21.23 ms | 20.90 ms | -1.6% |
sort/quickSort/160 | 24.05 ms | 23.67 ms | -1.6% |
sort/quickSort/170 | 27.15 ms | 26.76 ms | -1.4% |
sort/quickSort/180 | 30.44 ms | 30.07 ms | -1.2% |
sort/quickSort/190 | 33.90 ms | 33.43 ms | -1.4% |
sort/quickSort/200 | 37.55 ms | 36.90 ms | -1.7% |
sort/quickSort/210 | 41.40 ms | 40.83 ms | -1.4% |
sort/quickSort/220 | 45.40 ms | 44.64 ms | -1.7% |
sort/quickSort/230 | 49.61 ms | 49.00 ms | -1.2% |
sort/quickSort/240 | 54.10 ms | 53.38 ms | -1.3% |
sort/quickSort/250 | 58.68 ms | 57.60 ms | -1.8% |
sort/quickSort/260 | 63.36 ms | 62.56 ms | -1.3% |
sort/quickSort/270 | 68.31 ms | 67.42 ms | -1.3% |
sort/quickSort/280 | 73.48 ms | 72.49 ms | -1.3% |
sort/quickSort/290 | 78.92 ms | 77.64 ms | -1.6% |
sort/quickSort/300 | 84.46 ms | 83.00 ms | -1.7% |
sort/quickSort/310 | 90.40 ms | 88.97 ms | -1.6% |
sort/quickSort/320 | 96.27 ms | 94.73 ms | -1.6% |
sort/quickSort/330 | 102.3 ms | 100.8 ms | -1.5% |
sort/quickSort/340 | 109.3 ms | 107.2 ms | -1.9% |
sort/quickSort/350 | 115.6 ms | 113.6 ms | -1.7% |
sort/quickSort/360 | 121.8 ms | 120.1 ms | -1.4% |
sort/quickSort/370 | 129.4 ms | 127.0 ms | -1.9% |
sort/quickSort/380 | 136.2 ms | 134.1 ms | -1.5% |
sort/quickSort/390 | 143.1 ms | 141.5 ms | -1.1% |
sort/quickSort/400 | 151.1 ms | 148.6 ms | -1.7% |
sort/quickSort/410 | 159.0 ms | 156.6 ms | -1.5% |
sort/quickSort/420 | 166.8 ms | 164.3 ms | -1.5% |
sort/quickSort/430 | 174.9 ms | 173.0 ms | -1.1% |
sort/quickSort/440 | 182.9 ms | 180.5 ms | -1.3% |
sort/quickSort/450 | 192.3 ms | 190.0 ms | -1.2% |
sort/quickSort/460 | 200.7 ms | 198.2 ms | -1.2% |
sort/quickSort/470 | 209.9 ms | 207.1 ms | -1.3% |
sort/quickSort/480 | 218.5 ms | 215.9 ms | -1.2% |
sort/quickSort/490 | 228.6 ms | 225.5 ms | -1.4% |
sort/quickSort/500 | 237.5 ms | 234.2 ms | -1.4% |
sum/compiled-from-Haskell/sum-right-builtin/10 | 12.51 μs | 9.214 μs | -26.3% |
sum/compiled-from-Haskell/sum-right-builtin/50 | 57.72 μs | 42.59 μs | -26.2% |
sum/compiled-from-Haskell/sum-right-builtin/100 | 116.5 μs | 84.57 μs | -27.4% |
sum/compiled-from-Haskell/sum-right-builtin/500 | 607.9 μs | 450.0 μs | -26.0% |
sum/compiled-from-Haskell/sum-right-builtin/1000 | 1.317 ms | 979.5 μs | -25.6% |
sum/compiled-from-Haskell/sum-right-builtin/5000 | 8.578 ms | 6.866 ms | -20.0% |
sum/compiled-from-Haskell/sum-right-builtin/10000 | 18.58 ms | 15.77 ms | -15.1% |
sum/compiled-from-Haskell/sum-right-Scott/10 | 9.632 μs | 9.467 μs | -1.7% |
sum/compiled-from-Haskell/sum-right-Scott/50 | 44.39 μs | 43.47 μs | -2.1% |
sum/compiled-from-Haskell/sum-right-Scott/100 | 87.75 μs | 86.14 μs | -1.8% |
sum/compiled-from-Haskell/sum-right-Scott/500 | 461.3 μs | 451.1 μs | -2.2% |
sum/compiled-from-Haskell/sum-right-Scott/1000 | 994.0 μs | 978.2 μs | -1.6% |
sum/compiled-from-Haskell/sum-right-Scott/5000 | 7.075 ms | 7.108 ms | +0.5% |
sum/compiled-from-Haskell/sum-right-Scott/10000 | 16.39 ms | 16.68 ms | +1.8% |
sum/compiled-from-Haskell/sum-right-data/10 | 27.13 μs | 21.44 μs | -21.0% |
sum/compiled-from-Haskell/sum-right-data/50 | 130.4 μs | 102.8 μs | -21.2% |
sum/compiled-from-Haskell/sum-right-data/100 | 261.8 μs | 206.4 μs | -21.2% |
sum/compiled-from-Haskell/sum-right-data/500 | 1.437 ms | 1.102 ms | -23.3% |
sum/compiled-from-Haskell/sum-right-data/1000 | 3.256 ms | 2.477 ms | -23.9% |
sum/compiled-from-Haskell/sum-right-data/5000 | 18.35 ms | 14.01 ms | -23.7% |
sum/compiled-from-Haskell/sum-right-data/10000 | 38.45 ms | 29.27 ms | -23.9% |
sum/compiled-from-Haskell/sum-left-builtin/10 | 11.97 μs | 9.103 μs | -24.0% |
sum/compiled-from-Haskell/sum-left-builtin/50 | 56.78 μs | 42.14 μs | -25.8% |
sum/compiled-from-Haskell/sum-left-builtin/100 | 114.2 μs | 83.71 μs | -26.7% |
sum/compiled-from-Haskell/sum-left-builtin/500 | 595.5 μs | 442.5 μs | -25.7% |
sum/compiled-from-Haskell/sum-left-builtin/1000 | 1.285 ms | 961.1 μs | -25.2% |
sum/compiled-from-Haskell/sum-left-builtin/5000 | 8.402 ms | 6.963 ms | -17.1% |
sum/compiled-from-Haskell/sum-left-builtin/10000 | 17.98 ms | 15.10 ms | -16.0% |
sum/compiled-from-Haskell/sum-left-Scott/10 | 9.593 μs | 9.195 μs | -4.1% |
sum/compiled-from-Haskell/sum-left-Scott/50 | 44.19 μs | 42.22 μs | -4.5% |
sum/compiled-from-Haskell/sum-left-Scott/100 | 87.30 μs | 83.83 μs | -4.0% |
sum/compiled-from-Haskell/sum-left-Scott/500 | 455.6 μs | 437.7 μs | -3.9% |
sum/compiled-from-Haskell/sum-left-Scott/1000 | 972.4 μs | 937.9 μs | -3.5% |
sum/compiled-from-Haskell/sum-left-Scott/5000 | 7.083 ms | 6.908 ms | -2.5% |
sum/compiled-from-Haskell/sum-left-Scott/10000 | 16.05 ms | 15.77 ms | -1.7% |
sum/compiled-from-Haskell/sum-left-data/10 | 27.90 μs | 21.60 μs | -22.6% |
sum/compiled-from-Haskell/sum-left-data/50 | 131.6 μs | 103.0 μs | -21.7% |
sum/compiled-from-Haskell/sum-left-data/100 | 266.1 μs | 206.5 μs | -22.4% |
sum/compiled-from-Haskell/sum-left-data/500 | 1.455 ms | 1.101 ms | -24.3% |
sum/compiled-from-Haskell/sum-left-data/1000 | 3.264 ms | 2.448 ms | -25.0% |
sum/compiled-from-Haskell/sum-left-data/5000 | 18.29 ms | 13.94 ms | -23.8% |
sum/compiled-from-Haskell/sum-left-data/10000 | 37.77 ms | 28.84 ms | -23.6% |
sum/hand-written-PLC/sum-right-builtin/10 | 12.10 μs | 9.780 μs | -19.2% |
sum/hand-written-PLC/sum-right-builtin/50 | 55.14 μs | 44.91 μs | -18.6% |
sum/hand-written-PLC/sum-right-builtin/100 | 109.1 μs | 88.54 μs | -18.8% |
sum/hand-written-PLC/sum-right-builtin/500 | 551.7 μs | 450.2 μs | -18.4% |
sum/hand-written-PLC/sum-right-builtin/1000 | 1.127 ms | 920.1 μs | -18.4% |
sum/hand-written-PLC/sum-right-builtin/5000 | 6.327 ms | 5.326 ms | -15.8% |
sum/hand-written-PLC/sum-right-builtin/10000 | 12.88 ms | 10.98 ms | -14.8% |
sum/hand-written-PLC/sum-right-Scott/10 | 8.318 μs | 8.365 μs | +0.6% |
sum/hand-written-PLC/sum-right-Scott/50 | 36.50 μs | 35.55 μs | -2.6% |
sum/hand-written-PLC/sum-right-Scott/100 | 70.72 μs | 70.22 μs | -0.7% |
sum/hand-written-PLC/sum-right-Scott/500 | 360.1 μs | 358.6 μs | -0.4% |
sum/hand-written-PLC/sum-right-Scott/1000 | 739.6 μs | 733.7 μs | -0.8% |
sum/hand-written-PLC/sum-right-Scott/5000 | 4.825 ms | 4.798 ms | -0.6% |
sum/hand-written-PLC/sum-right-Scott/10000 | 10.52 ms | 10.54 ms | +0.2% |
sum/hand-written-PLC/sum-left-builtin/10 | 12.91 μs | 10.99 μs | -14.9% |
sum/hand-written-PLC/sum-left-builtin/50 | 58.87 μs | 49.32 μs | -16.2% |
sum/hand-written-PLC/sum-left-builtin/100 | 115.1 μs | 96.85 μs | -15.9% |
sum/hand-written-PLC/sum-left-builtin/500 | 569.1 μs | 476.7 μs | -16.2% |
sum/hand-written-PLC/sum-left-builtin/1000 | 1.135 ms | 949.7 μs | -16.3% |
sum/hand-written-PLC/sum-left-builtin/5000 | 5.665 ms | 4.701 ms | -17.0% |
sum/hand-written-PLC/sum-left-builtin/10000 | 11.24 ms | 9.424 ms | -16.2% |
sum/hand-written-PLC/sum-left-Scott/10 | 8.890 μs | 8.836 μs | -0.6% |
sum/hand-written-PLC/sum-left-Scott/50 | 39.90 μs | 39.05 μs | -2.1% |
sum/hand-written-PLC/sum-left-Scott/100 | 78.83 μs | 77.47 μs | -1.7% |
sum/hand-written-PLC/sum-left-Scott/500 | 395.1 μs | 388.0 μs | -1.8% |
sum/hand-written-PLC/sum-left-Scott/1000 | 795.8 μs | 783.2 μs | -1.6% |
sum/hand-written-PLC/sum-left-Scott/5000 | 4.603 ms | 4.528 ms | -1.6% |
sum/hand-written-PLC/sum-left-Scott/10000 | 9.482 ms | 9.340 ms | -1.5% |
@michaelpj seems like I forgot to hit "comment" last time I wrote a response to your latest comment. Here's another attempt.
Is the "real" answer here that we can return any term that introduces no new variable binders? e.g. introducing
force
/delay
/constr
all also seem fine, because it's adding new binders that really throws us off (because then we'd need to shift any binders in the input terms depending on where we put them, etc.
Yeah, I guess, although we don't seem to need force
or delay
. Yet anyway.
Although we could allow constructing arbitrary terms as long as it's impossible to embed values supplied as arguments into them, so that there's no chance of mixing up original and created-by-the-builtin variables, but I'm not even sure what we could use that for, so probably not worth discussing it.
Although even then... can I do this?
\h a -> h 1 a
Yep, the machinery implemented in this PR is enough for that, just checked:
this :: Opaque val (Integer -> a -> b) -> Opaque val a -> Opaque (HeadSpine val) b
this h (Opaque a) = headSpine h [fromValue (1 :: Integer), a]
or this?
\h a -> h (addInteger 1 2) a
Not with the machinery implemented in this PR (neither nested application nor builtin calls are supported within the denotation of a builtin), but we can add support for those later if we want to.
/benchmark plutus-benchmark:lists
Click here to check the status of your benchmark.
Comparing benchmark results of 'plutus-benchmark:lists' on 'cc5447d08' (base) and 'fe81335cd' (PR)
Results table
Script | cc5447d | fe81335 | Change |
---|---|---|---|
sort/ghcSort/10 | 37.12 μs | 38.61 μs | +4.0% |
sort/ghcSort/20 | 86.62 μs | 89.26 μs | +3.0% |
sort/ghcSort/30 | 133.2 μs | 137.3 μs | +3.1% |
sort/ghcSort/40 | 196.3 μs | 200.3 μs | +2.0% |
sort/ghcSort/50 | 235.5 μs | 246.8 μs | +4.8% |
sort/ghcSort/60 | 303.3 μs | 311.4 μs | +2.7% |
sort/ghcSort/70 | 390.1 μs | 404.9 μs | +3.8% |
sort/ghcSort/80 | 445.1 μs | 457.1 μs | +2.7% |
sort/ghcSort/90 | 493.4 μs | 504.2 μs | +2.2% |
sort/ghcSort/100 | 555.6 μs | 568.3 μs | +2.3% |
sort/ghcSort/110 | 609.3 μs | 622.2 μs | +2.1% |
sort/ghcSort/120 | 693.5 μs | 709.9 μs | +2.4% |
sort/ghcSort/130 | 849.7 μs | 868.9 μs | +2.3% |
sort/ghcSort/140 | 901.7 μs | 924.2 μs | +2.5% |
sort/ghcSort/150 | 963.0 μs | 988.9 μs | +2.7% |
sort/ghcSort/160 | 1.030 ms | 1.053 ms | +2.2% |
sort/ghcSort/170 | 1.087 ms | 1.120 ms | +3.0% |
sort/ghcSort/180 | 1.149 ms | 1.171 ms | +1.9% |
sort/ghcSort/190 | 1.217 ms | 1.248 ms | +2.5% |
sort/ghcSort/200 | 1.312 ms | 1.338 ms | +2.0% |
sort/ghcSort/210 | 1.367 ms | 1.395 ms | +2.0% |
sort/ghcSort/220 | 1.425 ms | 1.464 ms | +2.7% |
sort/ghcSort/230 | 1.520 ms | 1.564 ms | +2.9% |
sort/ghcSort/240 | 1.610 ms | 1.659 ms | +3.0% |
sort/ghcSort/250 | 1.701 ms | 1.734 ms | +1.9% |
sort/ghcSort/260 | 1.953 ms | 2.000 ms | +2.4% |
sort/ghcSort/270 | 1.990 ms | 2.056 ms | +3.3% |
sort/ghcSort/280 | 2.077 ms | 2.115 ms | +1.8% |
sort/ghcSort/290 | 2.126 ms | 2.192 ms | +3.1% |
sort/ghcSort/300 | 2.210 ms | 2.269 ms | +2.7% |
sort/ghcSort/310 | 2.288 ms | 2.339 ms | +2.2% |
sort/ghcSort/320 | 2.362 ms | 2.425 ms | +2.7% |
sort/ghcSort/330 | 2.432 ms | 2.496 ms | +2.6% |
sort/ghcSort/340 | 2.514 ms | 2.559 ms | +1.8% |
sort/ghcSort/350 | 2.572 ms | 2.625 ms | +2.1% |
sort/ghcSort/360 | 2.643 ms | 2.703 ms | +2.3% |
sort/ghcSort/370 | 2.709 ms | 2.779 ms | +2.6% |
sort/ghcSort/380 | 2.800 ms | 2.861 ms | +2.2% |
sort/ghcSort/390 | 2.929 ms | 2.998 ms | +2.4% |
sort/ghcSort/400 | 3.003 ms | 3.071 ms | +2.3% |
sort/ghcSort/410 | 3.036 ms | 3.126 ms | +3.0% |
sort/ghcSort/420 | 3.135 ms | 3.206 ms | +2.3% |
sort/ghcSort/430 | 3.198 ms | 3.275 ms | +2.4% |
sort/ghcSort/440 | 3.270 ms | 3.364 ms | +2.9% |
sort/ghcSort/450 | 3.467 ms | 3.538 ms | +2.0% |
sort/ghcSort/460 | 3.493 ms | 3.597 ms | +3.0% |
sort/ghcSort/470 | 3.608 ms | 3.681 ms | +2.0% |
sort/ghcSort/480 | 3.728 ms | 3.811 ms | +2.2% |
sort/ghcSort/490 | 3.789 ms | 3.888 ms | +2.6% |
sort/ghcSort/500 | 3.907 ms | 4.004 ms | +2.5% |
sort/insertionSort/10 | 34.13 μs | 35.26 μs | +3.3% |
sort/insertionSort/20 | 124.1 μs | 126.6 μs | +2.0% |
sort/insertionSort/30 | 268.3 μs | 275.5 μs | +2.7% |
sort/insertionSort/40 | 474.1 μs | 481.5 μs | +1.6% |
sort/insertionSort/50 | 733.2 μs | 748.1 μs | +2.0% |
sort/insertionSort/60 | 1.059 ms | 1.075 ms | +1.5% |
sort/insertionSort/70 | 1.434 ms | 1.456 ms | +1.5% |
sort/insertionSort/80 | 1.866 ms | 1.898 ms | +1.7% |
sort/insertionSort/90 | 2.358 ms | 2.403 ms | +1.9% |
sort/insertionSort/100 | 2.911 ms | 2.956 ms | +1.5% |
sort/insertionSort/110 | 3.524 ms | 3.560 ms | +1.0% |
sort/insertionSort/120 | 4.194 ms | 4.238 ms | +1.0% |
sort/insertionSort/130 | 5.092 ms | 4.995 ms | -1.9% |
sort/insertionSort/140 | 5.680 ms | 5.771 ms | +1.6% |
sort/insertionSort/150 | 6.543 ms | 6.609 ms | +1.0% |
sort/insertionSort/160 | 7.441 ms | 7.544 ms | +1.4% |
sort/insertionSort/170 | 8.427 ms | 8.531 ms | +1.2% |
sort/insertionSort/180 | 9.387 ms | 9.549 ms | +1.7% |
sort/insertionSort/190 | 10.45 ms | 10.67 ms | +2.1% |
sort/insertionSort/200 | 11.60 ms | 11.79 ms | +1.6% |
sort/insertionSort/210 | 12.77 ms | 13.02 ms | +2.0% |
sort/insertionSort/220 | 14.07 ms | 14.29 ms | +1.6% |
sort/insertionSort/230 | 15.35 ms | 15.66 ms | +2.0% |
sort/insertionSort/240 | 16.82 ms | 17.07 ms | +1.5% |
sort/insertionSort/250 | 18.15 ms | 18.50 ms | +1.9% |
sort/insertionSort/260 | 20.58 ms | 20.00 ms | -2.8% |
sort/insertionSort/270 | 21.41 ms | 21.67 ms | +1.2% |
sort/insertionSort/280 | 22.98 ms | 23.24 ms | +1.1% |
sort/insertionSort/290 | 24.75 ms | 25.06 ms | +1.3% |
sort/insertionSort/300 | 26.44 ms | 26.79 ms | +1.3% |
sort/insertionSort/310 | 28.24 ms | 28.73 ms | +1.7% |
sort/insertionSort/320 | 30.00 ms | 30.54 ms | +1.8% |
sort/insertionSort/330 | 31.98 ms | 32.49 ms | +1.6% |
sort/insertionSort/340 | 33.94 ms | 34.52 ms | +1.7% |
sort/insertionSort/350 | 36.01 ms | 36.62 ms | +1.7% |
sort/insertionSort/360 | 38.27 ms | 38.80 ms | +1.4% |
sort/insertionSort/370 | 40.50 ms | 40.94 ms | +1.1% |
sort/insertionSort/380 | 42.68 ms | 43.25 ms | +1.3% |
sort/insertionSort/390 | 44.86 ms | 45.63 ms | +1.7% |
sort/insertionSort/400 | 47.33 ms | 48.09 ms | +1.6% |
sort/insertionSort/410 | 49.80 ms | 50.63 ms | +1.7% |
sort/insertionSort/420 | 52.04 ms | 52.95 ms | +1.7% |
sort/insertionSort/430 | 55.14 ms | 55.74 ms | +1.1% |
sort/insertionSort/440 | 57.51 ms | 58.53 ms | +1.8% |
sort/insertionSort/450 | 60.45 ms | 61.25 ms | +1.3% |
sort/insertionSort/460 | 63.01 ms | 63.71 ms | +1.1% |
sort/insertionSort/470 | 65.79 ms | 66.83 ms | +1.6% |
sort/insertionSort/480 | 68.84 ms | 69.67 ms | +1.2% |
sort/insertionSort/490 | 71.74 ms | 72.93 ms | +1.7% |
sort/insertionSort/500 | 74.33 ms | 75.99 ms | +2.2% |
sort/mergeSort/10 | 88.25 μs | 92.82 μs | +5.2% |
sort/mergeSort/20 | 214.6 μs | 223.8 μs | +4.3% |
sort/mergeSort/30 | 353.0 μs | 369.4 μs | +4.6% |
sort/mergeSort/40 | 501.1 μs | 520.4 μs | +3.9% |
sort/mergeSort/50 | 651.0 μs | 683.3 μs | +5.0% |
sort/mergeSort/60 | 822.5 μs | 856.2 μs | +4.1% |
sort/mergeSort/70 | 985.1 μs | 1.026 ms | +4.2% |
sort/mergeSort/80 | 1.160 ms | 1.210 ms | +4.3% |
sort/mergeSort/90 | 1.336 ms | 1.389 ms | +4.0% |
sort/mergeSort/100 | 1.509 ms | 1.571 ms | +4.1% |
sort/mergeSort/110 | 1.691 ms | 1.756 ms | +3.8% |
sort/mergeSort/120 | 1.879 ms | 1.959 ms | +4.3% |
sort/mergeSort/130 | 2.102 ms | 2.173 ms | +3.4% |
sort/mergeSort/140 | 2.259 ms | 2.350 ms | +4.0% |
sort/mergeSort/150 | 2.426 ms | 2.524 ms | +4.0% |
sort/mergeSort/160 | 2.630 ms | 2.739 ms | +4.1% |
sort/mergeSort/170 | 2.819 ms | 2.925 ms | +3.8% |
sort/mergeSort/180 | 3.012 ms | 3.140 ms | +4.2% |
sort/mergeSort/190 | 3.218 ms | 3.346 ms | +4.0% |
sort/mergeSort/200 | 3.399 ms | 3.534 ms | +4.0% |
sort/mergeSort/210 | 3.648 ms | 3.758 ms | +3.0% |
sort/mergeSort/220 | 3.790 ms | 3.955 ms | +4.4% |
sort/mergeSort/230 | 4.007 ms | 4.175 ms | +4.2% |
sort/mergeSort/240 | 4.223 ms | 4.387 ms | +3.9% |
sort/mergeSort/250 | 4.447 ms | 4.632 ms | +4.2% |
sort/mergeSort/260 | 4.688 ms | 4.869 ms | +3.9% |
sort/mergeSort/270 | 4.838 ms | 5.034 ms | +4.1% |
sort/mergeSort/280 | 5.035 ms | 5.247 ms | +4.2% |
sort/mergeSort/290 | 5.222 ms | 5.436 ms | +4.1% |
sort/mergeSort/300 | 5.426 ms | 5.646 ms | +4.1% |
sort/mergeSort/310 | 5.786 ms | 5.859 ms | +1.3% |
sort/mergeSort/320 | 5.886 ms | 6.123 ms | +4.0% |
sort/mergeSort/330 | 6.072 ms | 6.309 ms | +3.9% |
sort/mergeSort/340 | 6.287 ms | 6.529 ms | +3.8% |
sort/mergeSort/350 | 6.525 ms | 6.746 ms | +3.4% |
sort/mergeSort/360 | 6.724 ms | 6.997 ms | +4.1% |
sort/mergeSort/370 | 6.945 ms | 7.241 ms | +4.3% |
sort/mergeSort/380 | 7.387 ms | 7.450 ms | +0.9% |
sort/mergeSort/390 | 7.391 ms | 7.674 ms | +3.8% |
sort/mergeSort/400 | 7.570 ms | 7.873 ms | +4.0% |
sort/mergeSort/410 | 7.828 ms | 8.130 ms | +3.9% |
sort/mergeSort/420 | 8.049 ms | 8.358 ms | +3.8% |
sort/mergeSort/430 | 8.303 ms | 8.602 ms | +3.6% |
sort/mergeSort/440 | 8.450 ms | 8.783 ms | +3.9% |
sort/mergeSort/450 | 8.686 ms | 9.016 ms | +3.8% |
sort/mergeSort/460 | 8.924 ms | 9.271 ms | +3.9% |
sort/mergeSort/470 | 9.178 ms | 9.517 ms | +3.7% |
sort/mergeSort/480 | 9.400 ms | 9.760 ms | +3.8% |
sort/mergeSort/490 | 9.631 ms | 10.01 ms | +3.9% |
sort/mergeSort/500 | 9.862 ms | 10.28 ms | +4.2% |
sort/quickSort/10 | 81.01 μs | 81.32 μs | +0.4% |
sort/quickSort/20 | 298.3 μs | 302.5 μs | +1.4% |
sort/quickSort/30 | 654.8 μs | 664.7 μs | +1.5% |
sort/quickSort/40 | 1.169 ms | 1.187 ms | +1.5% |
sort/quickSort/50 | 1.836 ms | 1.865 ms | +1.6% |
sort/quickSort/60 | 2.645 ms | 2.677 ms | +1.2% |
sort/quickSort/70 | 3.613 ms | 3.673 ms | +1.7% |
sort/quickSort/80 | 4.732 ms | 4.788 ms | +1.2% |
sort/quickSort/90 | 6.013 ms | 6.101 ms | +1.5% |
sort/quickSort/100 | 7.320 ms | 7.437 ms | +1.6% |
sort/quickSort/110 | 8.925 ms | 9.034 ms | +1.2% |
sort/quickSort/120 | 10.58 ms | 10.76 ms | +1.7% |
sort/quickSort/130 | 12.43 ms | 12.60 ms | +1.4% |
sort/quickSort/140 | 14.28 ms | 14.47 ms | +1.3% |
sort/quickSort/150 | 16.47 ms | 16.70 ms | +1.4% |
sort/quickSort/160 | 18.67 ms | 18.97 ms | +1.6% |
sort/quickSort/170 | 21.02 ms | 21.33 ms | +1.5% |
sort/quickSort/180 | 23.61 ms | 23.96 ms | +1.5% |
sort/quickSort/190 | 26.33 ms | 26.64 ms | +1.2% |
sort/quickSort/200 | 29.07 ms | 29.46 ms | +1.3% |
sort/quickSort/210 | 31.99 ms | 32.45 ms | +1.4% |
sort/quickSort/220 | 35.22 ms | 35.77 ms | +1.6% |
sort/quickSort/230 | 38.49 ms | 38.93 ms | +1.1% |
sort/quickSort/240 | 41.94 ms | 42.41 ms | +1.1% |
sort/quickSort/250 | 45.40 ms | 45.91 ms | +1.1% |
sort/quickSort/260 | 49.10 ms | 49.71 ms | +1.2% |
sort/quickSort/270 | 52.97 ms | 53.72 ms | +1.4% |
sort/quickSort/280 | 57.08 ms | 57.62 ms | +0.9% |
sort/quickSort/290 | 61.12 ms | 62.01 ms | +1.5% |
sort/quickSort/300 | 65.35 ms | 66.17 ms | +1.3% |
sort/quickSort/310 | 69.98 ms | 70.72 ms | +1.1% |
sort/quickSort/320 | 74.56 ms | 75.34 ms | +1.0% |
sort/quickSort/330 | 79.13 ms | 80.51 ms | +1.7% |
sort/quickSort/340 | 84.33 ms | 85.64 ms | +1.6% |
sort/quickSort/350 | 89.23 ms | 90.71 ms | +1.7% |
sort/quickSort/360 | 94.29 ms | 95.87 ms | +1.7% |
sort/quickSort/370 | 99.76 ms | 101.3 ms | +1.5% |
sort/quickSort/380 | 105.3 ms | 107.0 ms | +1.6% |
sort/quickSort/390 | 111.0 ms | 112.9 ms | +1.7% |
sort/quickSort/400 | 116.7 ms | 119.0 ms | +2.0% |
sort/quickSort/410 | 123.0 ms | 124.5 ms | +1.2% |
sort/quickSort/420 | 129.5 ms | 131.1 ms | +1.2% |
sort/quickSort/430 | 135.8 ms | 137.4 ms | +1.2% |
sort/quickSort/440 | 141.9 ms | 144.7 ms | +2.0% |
sort/quickSort/450 | 148.9 ms | 151.1 ms | +1.5% |
sort/quickSort/460 | 155.6 ms | 157.6 ms | +1.3% |
sort/quickSort/470 | 162.7 ms | 165.5 ms | +1.7% |
sort/quickSort/480 | 170.9 ms | 172.3 ms | +0.8% |
sort/quickSort/490 | 177.1 ms | 180.2 ms | +1.8% |
sort/quickSort/500 | 184.2 ms | 187.5 ms | +1.8% |
sum/compiled-from-Haskell/sum-right-builtin/10 | 8.380 μs | 7.157 μs | -14.6% |
sum/compiled-from-Haskell/sum-right-builtin/50 | 39.37 μs | 33.12 μs | -15.9% |
sum/compiled-from-Haskell/sum-right-builtin/100 | 78.86 μs | 66.89 μs | -15.2% |
sum/compiled-from-Haskell/sum-right-builtin/500 | 431.2 μs | 361.9 μs | -16.1% |
sum/compiled-from-Haskell/sum-right-builtin/1000 | 951.4 μs | 796.3 μs | -16.3% |
sum/compiled-from-Haskell/sum-right-builtin/5000 | 6.704 ms | 5.980 ms | -10.8% |
sum/compiled-from-Haskell/sum-right-builtin/10000 | 14.93 ms | 13.90 ms | -6.9% |
sum/compiled-from-Haskell/sum-right-Scott/10 | 6.772 μs | 7.115 μs | +5.1% |
sum/compiled-from-Haskell/sum-right-Scott/50 | 31.24 μs | 33.12 μs | +6.0% |
sum/compiled-from-Haskell/sum-right-Scott/100 | 62.53 μs | 66.75 μs | +6.7% |
sum/compiled-from-Haskell/sum-right-Scott/500 | 336.2 μs | 356.7 μs | +6.1% |
sum/compiled-from-Haskell/sum-right-Scott/1000 | 737.3 μs | 782.0 μs | +6.1% |
sum/compiled-from-Haskell/sum-right-Scott/5000 | 5.671 ms | 5.979 ms | +5.4% |
sum/compiled-from-Haskell/sum-right-Scott/10000 | 13.97 ms | 14.37 ms | +2.9% |
sum/compiled-from-Haskell/sum-right-data/10 | 20.35 μs | 17.36 μs | -14.7% |
sum/compiled-from-Haskell/sum-right-data/50 | 97.62 μs | 83.37 μs | -14.6% |
sum/compiled-from-Haskell/sum-right-data/100 | 195.6 μs | 167.4 μs | -14.4% |
sum/compiled-from-Haskell/sum-right-data/500 | 1.108 ms | 911.8 μs | -17.7% |
sum/compiled-from-Haskell/sum-right-data/1000 | 2.589 ms | 2.099 ms | -18.9% |
sum/compiled-from-Haskell/sum-right-data/5000 | 15.00 ms | 12.19 ms | -18.7% |
sum/compiled-from-Haskell/sum-right-data/10000 | 31.66 ms | 25.59 ms | -19.2% |
sum/compiled-from-Haskell/sum-left-builtin/10 | 8.053 μs | 6.927 μs | -14.0% |
sum/compiled-from-Haskell/sum-left-builtin/50 | 38.60 μs | 32.50 μs | -15.8% |
sum/compiled-from-Haskell/sum-left-builtin/100 | 76.53 μs | 64.19 μs | -16.1% |
sum/compiled-from-Haskell/sum-left-builtin/500 | 412.5 μs | 343.8 μs | -16.7% |
sum/compiled-from-Haskell/sum-left-builtin/1000 | 917.2 μs | 756.3 μs | -17.5% |
sum/compiled-from-Haskell/sum-left-builtin/5000 | 6.567 ms | 5.825 ms | -11.3% |
sum/compiled-from-Haskell/sum-left-builtin/10000 | 14.32 ms | 13.14 ms | -8.2% |
sum/compiled-from-Haskell/sum-left-Scott/10 | 6.510 μs | 6.989 μs | +7.4% |
sum/compiled-from-Haskell/sum-left-Scott/50 | 30.34 μs | 32.26 μs | +6.3% |
sum/compiled-from-Haskell/sum-left-Scott/100 | 61.19 μs | 64.18 μs | +4.9% |
sum/compiled-from-Haskell/sum-left-Scott/500 | 322.7 μs | 339.2 μs | +5.1% |
sum/compiled-from-Haskell/sum-left-Scott/1000 | 705.4 μs | 742.7 μs | +5.3% |
sum/compiled-from-Haskell/sum-left-Scott/5000 | 5.764 ms | 5.893 ms | +2.2% |
sum/compiled-from-Haskell/sum-left-Scott/10000 | 13.06 ms | 13.33 ms | +2.1% |
sum/compiled-from-Haskell/sum-left-data/10 | 21.18 μs | 17.44 μs | -17.7% |
sum/compiled-from-Haskell/sum-left-data/50 | 101.6 μs | 83.84 μs | -17.5% |
sum/compiled-from-Haskell/sum-left-data/100 | 202.0 μs | 166.7 μs | -17.5% |
sum/compiled-from-Haskell/sum-left-data/500 | 1.141 ms | 892.8 μs | -21.8% |
sum/compiled-from-Haskell/sum-left-data/1000 | 2.640 ms | 2.032 ms | -23.0% |
sum/compiled-from-Haskell/sum-left-data/5000 | 15.19 ms | 11.70 ms | -23.0% |
sum/compiled-from-Haskell/sum-left-data/10000 | 31.55 ms | 24.40 ms | -22.7% |
sum/hand-written-PLC/sum-right-builtin/10 | 8.367 μs | 7.304 μs | -12.7% |
sum/hand-written-PLC/sum-right-builtin/50 | 37.27 μs | 33.66 μs | -9.7% |
sum/hand-written-PLC/sum-right-builtin/100 | 73.83 μs | 66.52 μs | -9.9% |
sum/hand-written-PLC/sum-right-builtin/500 | 374.4 μs | 339.8 μs | -9.2% |
sum/hand-written-PLC/sum-right-builtin/1000 | 783.2 μs | 699.4 μs | -10.7% |
sum/hand-written-PLC/sum-right-builtin/5000 | 4.662 ms | 4.239 ms | -9.1% |
sum/hand-written-PLC/sum-right-builtin/10000 | 9.594 ms | 8.804 ms | -8.2% |
sum/hand-written-PLC/sum-right-Scott/10 | 5.534 μs | 5.994 μs | +8.3% |
sum/hand-written-PLC/sum-right-Scott/50 | 24.69 μs | 26.33 μs | +6.6% |
sum/hand-written-PLC/sum-right-Scott/100 | 47.39 μs | 50.55 μs | +6.7% |
sum/hand-written-PLC/sum-right-Scott/500 | 245.8 μs | 261.0 μs | +6.2% |
sum/hand-written-PLC/sum-right-Scott/1000 | 510.7 μs | 546.4 μs | +7.0% |
sum/hand-written-PLC/sum-right-Scott/5000 | 3.630 ms | 3.819 ms | +5.2% |
sum/hand-written-PLC/sum-right-Scott/10000 | 8.051 ms | 8.511 ms | +5.7% |
sum/hand-written-PLC/sum-left-builtin/10 | 8.618 μs | 8.303 μs | -3.7% |
sum/hand-written-PLC/sum-left-builtin/50 | 39.33 μs | 36.28 μs | -7.8% |
sum/hand-written-PLC/sum-left-builtin/100 | 78.44 μs | 71.55 μs | -8.8% |
sum/hand-written-PLC/sum-left-builtin/500 | 377.5 μs | 349.4 μs | -7.4% |
sum/hand-written-PLC/sum-left-builtin/1000 | 748.2 μs | 692.9 μs | -7.4% |
sum/hand-written-PLC/sum-left-builtin/5000 | 3.704 ms | 3.429 ms | -7.4% |
sum/hand-written-PLC/sum-left-builtin/10000 | 7.372 ms | 6.820 ms | -7.5% |
sum/hand-written-PLC/sum-left-Scott/10 | 5.686 μs | 6.003 μs | +5.6% |
sum/hand-written-PLC/sum-left-Scott/50 | 26.03 μs | 27.60 μs | +6.0% |
sum/hand-written-PLC/sum-left-Scott/100 | 51.64 μs | 54.82 μs | +6.2% |
sum/hand-written-PLC/sum-left-Scott/500 | 260.3 μs | 277.1 μs | +6.5% |
sum/hand-written-PLC/sum-left-Scott/1000 | 528.3 μs | 565.5 μs | +7.0% |
sum/hand-written-PLC/sum-left-Scott/5000 | 3.246 ms | 3.417 ms | +5.3% |
sum/hand-written-PLC/sum-left-Scott/10000 | 6.705 ms | 7.061 ms | +5.3% |
/benchmark plutus-benchmark:lists
Click here to check the status of your benchmark.
Comparing benchmark results of 'plutus-benchmark:lists' on 'cc5447d08' (base) and 'fe81335cd' (PR)
Results table
Script | cc5447d | fe81335 | Change |
---|---|---|---|
sort/ghcSort/10 | 36.24 μs | 39.15 μs | +8.0% |
sort/ghcSort/20 | 84.79 μs | 90.76 μs | +7.0% |
sort/ghcSort/30 | 129.5 μs | 140.4 μs | +8.4% |
sort/ghcSort/40 | 192.1 μs | 203.5 μs | +5.9% |
sort/ghcSort/50 | 233.2 μs | 252.2 μs | +8.1% |
sort/ghcSort/60 | 297.0 μs | 317.1 μs | +6.8% |
sort/ghcSort/70 | 382.5 μs | 411.8 μs | +7.7% |
sort/ghcSort/80 | 435.6 μs | 467.8 μs | +7.4% |
sort/ghcSort/90 | 481.0 μs | 516.4 μs | +7.4% |
sort/ghcSort/100 | 551.1 μs | 580.1 μs | +5.3% |
sort/ghcSort/110 | 597.8 μs | 635.9 μs | +6.4% |
sort/ghcSort/120 | 679.6 μs | 724.3 μs | +6.6% |
sort/ghcSort/130 | 831.2 μs | 887.8 μs | +6.8% |
sort/ghcSort/140 | 883.0 μs | 939.1 μs | +6.4% |
sort/ghcSort/150 | 941.3 μs | 1.008 ms | +7.1% |
sort/ghcSort/160 | 1.005 ms | 1.071 ms | +6.6% |
sort/ghcSort/170 | 1.059 ms | 1.139 ms | +7.6% |
sort/ghcSort/180 | 1.121 ms | 1.190 ms | +6.2% |
sort/ghcSort/190 | 1.188 ms | 1.266 ms | +6.6% |
sort/ghcSort/200 | 1.278 ms | 1.359 ms | +6.3% |
sort/ghcSort/210 | 1.336 ms | 1.420 ms | +6.3% |
sort/ghcSort/220 | 1.397 ms | 1.484 ms | +6.2% |
sort/ghcSort/230 | 1.491 ms | 1.587 ms | +6.4% |
sort/ghcSort/240 | 1.582 ms | 1.681 ms | +6.3% |
sort/ghcSort/250 | 1.662 ms | 1.763 ms | +6.1% |
sort/ghcSort/260 | 1.904 ms | 2.034 ms | +6.8% |
sort/ghcSort/270 | 1.953 ms | 2.088 ms | +6.9% |
sort/ghcSort/280 | 2.035 ms | 2.149 ms | +5.6% |
sort/ghcSort/290 | 2.095 ms | 2.228 ms | +6.3% |
sort/ghcSort/300 | 2.196 ms | 2.308 ms | +5.1% |
sort/ghcSort/310 | 2.243 ms | 2.393 ms | +6.7% |
sort/ghcSort/320 | 2.319 ms | 2.462 ms | +6.2% |
sort/ghcSort/330 | 2.379 ms | 2.548 ms | +7.1% |
sort/ghcSort/340 | 2.514 ms | 2.607 ms | +3.7% |
sort/ghcSort/350 | 2.508 ms | 2.664 ms | +6.2% |
sort/ghcSort/360 | 2.638 ms | 2.742 ms | +3.9% |
sort/ghcSort/370 | 2.651 ms | 2.821 ms | +6.4% |
sort/ghcSort/380 | 2.783 ms | 2.912 ms | +4.6% |
sort/ghcSort/390 | 2.869 ms | 3.044 ms | +6.1% |
sort/ghcSort/400 | 2.984 ms | 3.114 ms | +4.4% |
sort/ghcSort/410 | 2.968 ms | 3.160 ms | +6.5% |
sort/ghcSort/420 | 3.080 ms | 3.269 ms | +6.1% |
sort/ghcSort/430 | 3.122 ms | 3.333 ms | +6.8% |
sort/ghcSort/440 | 3.223 ms | 3.418 ms | +6.1% |
sort/ghcSort/450 | 3.385 ms | 3.595 ms | +6.2% |
sort/ghcSort/460 | 3.444 ms | 3.642 ms | +5.7% |
sort/ghcSort/470 | 3.521 ms | 3.740 ms | +6.2% |
sort/ghcSort/480 | 3.643 ms | 3.873 ms | +6.3% |
sort/ghcSort/490 | 3.724 ms | 3.952 ms | +6.1% |
sort/ghcSort/500 | 3.823 ms | 4.062 ms | +6.3% |
sort/insertionSort/10 | 33.69 μs | 35.79 μs | +6.2% |
sort/insertionSort/20 | 121.6 μs | 129.0 μs | +6.1% |
sort/insertionSort/30 | 264.1 μs | 280.2 μs | +6.1% |
sort/insertionSort/40 | 463.0 μs | 489.7 μs | +5.8% |
sort/insertionSort/50 | 718.4 μs | 762.4 μs | +6.1% |
sort/insertionSort/60 | 1.032 ms | 1.094 ms | +6.0% |
sort/insertionSort/70 | 1.403 ms | 1.490 ms | +6.2% |
sort/insertionSort/80 | 1.820 ms | 1.939 ms | +6.5% |
sort/insertionSort/90 | 2.293 ms | 2.443 ms | +6.5% |
sort/insertionSort/100 | 2.840 ms | 3.006 ms | +5.8% |
sort/insertionSort/110 | 3.556 ms | 3.628 ms | +2.0% |
sort/insertionSort/120 | 4.083 ms | 4.326 ms | +6.0% |
sort/insertionSort/130 | 4.784 ms | 5.078 ms | +6.1% |
sort/insertionSort/140 | 5.554 ms | 5.889 ms | +6.0% |
sort/insertionSort/150 | 6.350 ms | 6.739 ms | +6.1% |
sort/insertionSort/160 | 7.255 ms | 7.683 ms | +5.9% |
sort/insertionSort/170 | 8.194 ms | 8.656 ms | +5.6% |
sort/insertionSort/180 | 9.130 ms | 9.758 ms | +6.9% |
sort/insertionSort/190 | 10.25 ms | 10.88 ms | +6.1% |
sort/insertionSort/200 | 11.37 ms | 12.05 ms | +6.0% |
sort/insertionSort/210 | 12.44 ms | 13.27 ms | +6.7% |
sort/insertionSort/220 | 13.98 ms | 14.61 ms | +4.5% |
sort/insertionSort/230 | 15.04 ms | 15.98 ms | +6.3% |
sort/insertionSort/240 | 16.35 ms | 17.42 ms | +6.5% |
sort/insertionSort/250 | 17.72 ms | 18.89 ms | +6.6% |
sort/insertionSort/260 | 19.15 ms | 20.52 ms | +7.2% |
sort/insertionSort/270 | 21.64 ms | 22.02 ms | +1.8% |
sort/insertionSort/280 | 22.26 ms | 23.69 ms | +6.4% |
sort/insertionSort/290 | 24.12 ms | 25.42 ms | +5.4% |
sort/insertionSort/300 | 25.79 ms | 27.23 ms | +5.6% |
sort/insertionSort/310 | 27.52 ms | 29.08 ms | +5.7% |
sort/insertionSort/320 | 29.17 ms | 31.06 ms | +6.5% |
sort/insertionSort/330 | 31.20 ms | 33.12 ms | +6.2% |
sort/insertionSort/340 | 33.18 ms | 35.10 ms | +5.8% |
sort/insertionSort/350 | 35.19 ms | 37.38 ms | +6.2% |
sort/insertionSort/360 | 38.38 ms | 39.53 ms | +3.0% |
sort/insertionSort/370 | 39.39 ms | 41.84 ms | +6.2% |
sort/insertionSort/380 | 41.52 ms | 44.13 ms | +6.3% |
sort/insertionSort/390 | 43.66 ms | 46.42 ms | +6.3% |
sort/insertionSort/400 | 46.23 ms | 48.78 ms | +5.5% |
sort/insertionSort/410 | 50.75 ms | 51.37 ms | +1.2% |
sort/insertionSort/420 | 53.15 ms | 54.06 ms | +1.7% |
sort/insertionSort/430 | 53.49 ms | 56.73 ms | +6.1% |
sort/insertionSort/440 | 55.98 ms | 59.48 ms | +6.3% |
sort/insertionSort/450 | 61.09 ms | 62.23 ms | +1.9% |
sort/insertionSort/460 | 61.65 ms | 64.95 ms | +5.4% |
sort/insertionSort/470 | 64.41 ms | 67.91 ms | +5.4% |
sort/insertionSort/480 | 66.91 ms | 70.90 ms | +6.0% |
sort/insertionSort/490 | 70.29 ms | 73.87 ms | +5.1% |
sort/insertionSort/500 | 75.99 ms | 77.18 ms | +1.6% |
sort/mergeSort/10 | 86.98 μs | 94.29 μs | +8.4% |
sort/mergeSort/20 | 211.1 μs | 227.5 μs | +7.8% |
sort/mergeSort/30 | 346.7 μs | 375.5 μs | +8.3% |
sort/mergeSort/40 | 492.7 μs | 530.8 μs | +7.7% |
sort/mergeSort/50 | 639.9 μs | 694.7 μs | +8.6% |
sort/mergeSort/60 | 807.9 μs | 871.1 μs | +7.8% |
sort/mergeSort/70 | 971.2 μs | 1.044 ms | +7.5% |
sort/mergeSort/80 | 1.142 ms | 1.231 ms | +7.8% |
sort/mergeSort/90 | 1.313 ms | 1.415 ms | +7.8% |
sort/mergeSort/100 | 1.485 ms | 1.601 ms | +7.8% |
sort/mergeSort/110 | 1.665 ms | 1.790 ms | +7.5% |
sort/mergeSort/120 | 1.899 ms | 1.992 ms | +4.9% |
sort/mergeSort/130 | 2.058 ms | 2.216 ms | +7.7% |
sort/mergeSort/140 | 2.213 ms | 2.392 ms | +8.1% |
sort/mergeSort/150 | 2.386 ms | 2.566 ms | +7.5% |
sort/mergeSort/160 | 2.663 ms | 2.785 ms | +4.6% |
sort/mergeSort/170 | 2.770 ms | 2.978 ms | +7.5% |
sort/mergeSort/180 | 2.960 ms | 3.190 ms | +7.8% |
sort/mergeSort/190 | 3.165 ms | 3.405 ms | +7.6% |
sort/mergeSort/200 | 3.343 ms | 3.601 ms | +7.7% |
sort/mergeSort/210 | 3.650 ms | 3.824 ms | +4.8% |
sort/mergeSort/220 | 3.718 ms | 4.030 ms | +8.4% |
sort/mergeSort/230 | 3.948 ms | 4.254 ms | +7.8% |
sort/mergeSort/240 | 4.147 ms | 4.453 ms | +7.4% |
sort/mergeSort/250 | 4.379 ms | 4.705 ms | +7.4% |
sort/mergeSort/260 | 4.712 ms | 4.946 ms | +5.0% |
sort/mergeSort/270 | 4.759 ms | 5.118 ms | +7.5% |
sort/mergeSort/280 | 4.965 ms | 5.324 ms | +7.2% |
sort/mergeSort/290 | 5.137 ms | 5.520 ms | +7.5% |
sort/mergeSort/300 | 5.343 ms | 5.747 ms | +7.6% |
sort/mergeSort/310 | 5.682 ms | 5.960 ms | +4.9% |
sort/mergeSort/320 | 5.776 ms | 6.248 ms | +8.2% |
sort/mergeSort/330 | 5.958 ms | 6.421 ms | +7.8% |
sort/mergeSort/340 | 6.184 ms | 6.653 ms | +7.6% |
sort/mergeSort/350 | 6.398 ms | 6.880 ms | +7.5% |
sort/mergeSort/360 | 6.599 ms | 7.112 ms | +7.8% |
sort/mergeSort/370 | 6.826 ms | 7.352 ms | +7.7% |
sort/mergeSort/380 | 7.224 ms | 7.584 ms | +5.0% |
sort/mergeSort/390 | 7.255 ms | 7.826 ms | +7.9% |
sort/mergeSort/400 | 7.438 ms | 8.017 ms | +7.8% |
sort/mergeSort/410 | 7.666 ms | 8.275 ms | +7.9% |
sort/mergeSort/420 | 8.143 ms | 8.514 ms | +4.6% |
sort/mergeSort/430 | 8.147 ms | 8.770 ms | +7.6% |
sort/mergeSort/440 | 8.326 ms | 8.948 ms | +7.5% |
sort/mergeSort/450 | 8.536 ms | 9.169 ms | +7.4% |
sort/mergeSort/460 | 8.752 ms | 9.416 ms | +7.6% |
sort/mergeSort/470 | 9.033 ms | 9.676 ms | +7.1% |
sort/mergeSort/480 | 9.232 ms | 9.937 ms | +7.6% |
sort/mergeSort/490 | 9.460 ms | 10.19 ms | +7.7% |
sort/mergeSort/500 | 10.02 ms | 10.45 ms | +4.3% |
sort/quickSort/10 | 79.66 μs | 82.57 μs | +3.7% |
sort/quickSort/20 | 291.7 μs | 306.9 μs | +5.2% |
sort/quickSort/30 | 640.3 μs | 674.1 μs | +5.3% |
sort/quickSort/40 | 1.146 ms | 1.205 ms | +5.1% |
sort/quickSort/50 | 1.805 ms | 1.894 ms | +4.9% |
sort/quickSort/60 | 2.594 ms | 2.732 ms | +5.3% |
sort/quickSort/70 | 3.541 ms | 3.729 ms | +5.3% |
sort/quickSort/80 | 4.624 ms | 4.880 ms | +5.5% |
sort/quickSort/90 | 5.886 ms | 6.167 ms | +4.8% |
sort/quickSort/100 | 7.182 ms | 7.546 ms | +5.1% |
sort/quickSort/110 | 8.737 ms | 9.145 ms | +4.7% |
sort/quickSort/120 | 10.62 ms | 10.92 ms | +2.8% |
sort/quickSort/130 | 12.15 ms | 12.79 ms | +5.3% |
sort/quickSort/140 | 13.96 ms | 14.71 ms | +5.4% |
sort/quickSort/150 | 16.14 ms | 17.00 ms | +5.3% |
sort/quickSort/160 | 18.31 ms | 19.27 ms | +5.2% |
sort/quickSort/170 | 20.64 ms | 21.74 ms | +5.3% |
sort/quickSort/180 | 23.13 ms | 24.30 ms | +5.1% |
sort/quickSort/190 | 25.74 ms | 26.95 ms | +4.7% |
sort/quickSort/200 | 28.48 ms | 29.92 ms | +5.1% |
sort/quickSort/210 | 31.35 ms | 32.97 ms | +5.2% |
sort/quickSort/220 | 34.59 ms | 36.24 ms | +4.8% |
sort/quickSort/230 | 37.72 ms | 39.50 ms | +4.7% |
sort/quickSort/240 | 41.21 ms | 42.95 ms | +4.2% |
sort/quickSort/250 | 44.53 ms | 46.53 ms | +4.5% |
sort/quickSort/260 | 48.08 ms | 50.50 ms | +5.0% |
sort/quickSort/270 | 51.91 ms | 54.51 ms | +5.0% |
sort/quickSort/280 | 55.82 ms | 58.61 ms | +5.0% |
sort/quickSort/290 | 59.81 ms | 62.77 ms | +4.9% |
sort/quickSort/300 | 64.01 ms | 67.25 ms | +5.1% |
sort/quickSort/310 | 68.52 ms | 71.86 ms | +4.9% |
sort/quickSort/320 | 72.99 ms | 76.53 ms | +4.8% |
sort/quickSort/330 | 77.79 ms | 81.35 ms | +4.6% |
sort/quickSort/340 | 82.72 ms | 86.95 ms | +5.1% |
sort/quickSort/350 | 87.53 ms | 92.12 ms | +5.2% |
sort/quickSort/360 | 92.47 ms | 97.42 ms | +5.4% |
sort/quickSort/370 | 97.99 ms | 102.7 ms | +4.8% |
sort/quickSort/380 | 103.6 ms | 108.8 ms | +5.0% |
sort/quickSort/390 | 109.2 ms | 114.3 ms | +4.7% |
sort/quickSort/400 | 115.0 ms | 121.0 ms | +5.2% |
sort/quickSort/410 | 120.5 ms | 126.1 ms | +4.6% |
sort/quickSort/420 | 126.9 ms | 133.1 ms | +4.9% |
sort/quickSort/430 | 133.3 ms | 139.8 ms | +4.9% |
sort/quickSort/440 | 139.1 ms | 146.0 ms | +5.0% |
sort/quickSort/450 | 145.7 ms | 153.1 ms | +5.1% |
sort/quickSort/460 | 153.1 ms | 160.3 ms | +4.7% |
sort/quickSort/470 | 159.4 ms | 167.4 ms | +5.0% |
sort/quickSort/480 | 167.0 ms | 175.0 ms | +4.8% |
sort/quickSort/490 | 173.8 ms | 182.6 ms | +5.1% |
sort/quickSort/500 | 180.8 ms | 190.3 ms | +5.3% |
sum/compiled-from-Haskell/sum-right-builtin/10 | 8.310 μs | 7.238 μs | -12.9% |
sum/compiled-from-Haskell/sum-right-builtin/50 | 39.04 μs | 33.31 μs | -14.7% |
sum/compiled-from-Haskell/sum-right-builtin/100 | 78.34 μs | 67.48 μs | -13.9% |
sum/compiled-from-Haskell/sum-right-builtin/500 | 426.2 μs | 363.1 μs | -14.8% |
sum/compiled-from-Haskell/sum-right-builtin/1000 | 946.1 μs | 801.6 μs | -15.3% |
sum/compiled-from-Haskell/sum-right-builtin/5000 | 6.646 ms | 5.993 ms | -9.8% |
sum/compiled-from-Haskell/sum-right-builtin/10000 | 14.83 ms | 13.93 ms | -6.1% |
sum/compiled-from-Haskell/sum-right-Scott/10 | 6.716 μs | 7.147 μs | +6.4% |
sum/compiled-from-Haskell/sum-right-Scott/50 | 30.91 μs | 33.30 μs | +7.7% |
sum/compiled-from-Haskell/sum-right-Scott/100 | 61.90 μs | 67.32 μs | +8.8% |
sum/compiled-from-Haskell/sum-right-Scott/500 | 332.4 μs | 359.9 μs | +8.3% |
sum/compiled-from-Haskell/sum-right-Scott/1000 | 730.5 μs | 789.0 μs | +8.0% |
sum/compiled-from-Haskell/sum-right-Scott/5000 | 5.638 ms | 6.008 ms | +6.6% |
sum/compiled-from-Haskell/sum-right-Scott/10000 | 13.90 ms | 14.39 ms | +3.5% |
sum/compiled-from-Haskell/sum-right-data/10 | 20.08 μs | 17.64 μs | -12.2% |
sum/compiled-from-Haskell/sum-right-data/50 | 96.47 μs | 85.07 μs | -11.8% |
sum/compiled-from-Haskell/sum-right-data/100 | 193.4 μs | 171.5 μs | -11.3% |
sum/compiled-from-Haskell/sum-right-data/500 | 1.099 ms | 924.6 μs | -15.9% |
sum/compiled-from-Haskell/sum-right-data/1000 | 2.564 ms | 2.121 ms | -17.3% |
sum/compiled-from-Haskell/sum-right-data/5000 | 14.89 ms | 12.34 ms | -17.1% |
sum/compiled-from-Haskell/sum-right-data/10000 | 31.46 ms | 25.96 ms | -17.5% |
sum/compiled-from-Haskell/sum-left-builtin/10 | 7.989 μs | 6.971 μs | -12.7% |
sum/compiled-from-Haskell/sum-left-builtin/50 | 38.14 μs | 32.56 μs | -14.6% |
sum/compiled-from-Haskell/sum-left-builtin/100 | 75.63 μs | 64.63 μs | -14.5% |
sum/compiled-from-Haskell/sum-left-builtin/500 | 407.2 μs | 345.9 μs | -15.1% |
sum/compiled-from-Haskell/sum-left-builtin/1000 | 909.3 μs | 763.6 μs | -16.0% |
sum/compiled-from-Haskell/sum-left-builtin/5000 | 6.488 ms | 5.851 ms | -9.8% |
sum/compiled-from-Haskell/sum-left-builtin/10000 | 14.21 ms | 13.18 ms | -7.2% |
sum/compiled-from-Haskell/sum-left-Scott/10 | 6.433 μs | 7.126 μs | +10.8% |
sum/compiled-from-Haskell/sum-left-Scott/50 | 29.89 μs | 32.92 μs | +10.1% |
sum/compiled-from-Haskell/sum-left-Scott/100 | 60.49 μs | 65.06 μs | +7.6% |
sum/compiled-from-Haskell/sum-left-Scott/500 | 319.0 μs | 343.3 μs | +7.6% |
sum/compiled-from-Haskell/sum-left-Scott/1000 | 699.0 μs | 748.9 μs | +7.1% |
sum/compiled-from-Haskell/sum-left-Scott/5000 | 5.703 ms | 5.964 ms | +4.6% |
sum/compiled-from-Haskell/sum-left-Scott/10000 | 12.99 ms | 13.42 ms | +3.3% |
sum/compiled-from-Haskell/sum-left-data/10 | 21.10 μs | 17.68 μs | -16.2% |
sum/compiled-from-Haskell/sum-left-data/50 | 100.7 μs | 85.22 μs | -15.4% |
sum/compiled-from-Haskell/sum-left-data/100 | 201.4 μs | 168.4 μs | -16.4% |
sum/compiled-from-Haskell/sum-left-data/500 | 1.134 ms | 910.5 μs | -19.7% |
sum/compiled-from-Haskell/sum-left-data/1000 | 2.627 ms | 2.065 ms | -21.4% |
sum/compiled-from-Haskell/sum-left-data/5000 | 14.97 ms | 11.82 ms | -21.0% |
sum/compiled-from-Haskell/sum-left-data/10000 | 31.37 ms | 24.67 ms | -21.4% |
sum/hand-written-PLC/sum-right-builtin/10 | 8.304 μs | 7.371 μs | -11.2% |
sum/hand-written-PLC/sum-right-builtin/50 | 36.89 μs | 34.28 μs | -7.1% |
sum/hand-written-PLC/sum-right-builtin/100 | 73.13 μs | 68.48 μs | -6.4% |
sum/hand-written-PLC/sum-right-builtin/500 | 372.7 μs | 340.5 μs | -8.6% |
sum/hand-written-PLC/sum-right-builtin/1000 | 777.7 μs | 705.2 μs | -9.3% |
sum/hand-written-PLC/sum-right-builtin/5000 | 4.607 ms | 4.261 ms | -7.5% |
sum/hand-written-PLC/sum-right-builtin/10000 | 9.503 ms | 8.860 ms | -6.8% |
sum/hand-written-PLC/sum-right-Scott/10 | 5.514 μs | 6.014 μs | +9.1% |
sum/hand-written-PLC/sum-right-Scott/50 | 23.95 μs | 26.43 μs | +10.4% |
sum/hand-written-PLC/sum-right-Scott/100 | 47.36 μs | 50.65 μs | +6.9% |
sum/hand-written-PLC/sum-right-Scott/500 | 244.3 μs | 262.4 μs | +7.4% |
sum/hand-written-PLC/sum-right-Scott/1000 | 507.6 μs | 547.5 μs | +7.9% |
sum/hand-written-PLC/sum-right-Scott/5000 | 3.601 ms | 3.839 ms | +6.6% |
sum/hand-written-PLC/sum-right-Scott/10000 | 8.023 ms | 8.558 ms | +6.7% |
sum/hand-written-PLC/sum-left-builtin/10 | 8.562 μs | 8.184 μs | -4.4% |
sum/hand-written-PLC/sum-left-builtin/50 | 39.40 μs | 36.58 μs | -7.2% |
sum/hand-written-PLC/sum-left-builtin/100 | 77.38 μs | 71.59 μs | -7.5% |
sum/hand-written-PLC/sum-left-builtin/500 | 375.6 μs | 351.6 μs | -6.4% |
sum/hand-written-PLC/sum-left-builtin/1000 | 740.8 μs | 696.9 μs | -5.9% |
sum/hand-written-PLC/sum-left-builtin/5000 | 3.662 ms | 3.448 ms | -5.8% |
sum/hand-written-PLC/sum-left-builtin/10000 | 7.310 ms | 6.863 ms | -6.1% |
sum/hand-written-PLC/sum-left-Scott/10 | 5.616 μs | 6.028 μs | +7.3% |
sum/hand-written-PLC/sum-left-Scott/50 | 25.93 μs | 27.63 μs | +6.6% |
sum/hand-written-PLC/sum-left-Scott/100 | 51.09 μs | 55.82 μs | +9.3% |
sum/hand-written-PLC/sum-left-Scott/500 | 259.0 μs | 277.5 μs | +7.1% |
sum/hand-written-PLC/sum-left-Scott/1000 | 525.8 μs | 567.6 μs | +7.9% |
sum/hand-written-PLC/sum-left-Scott/5000 | 3.220 ms | 3.436 ms | +6.7% |
sum/hand-written-PLC/sum-left-Scott/10000 | 6.704 ms | 7.068 ms | +5.4% |
/benchmark plutus-benchmark:lists
/benchmark plutus-benchmark:lists
Click here to check the status of your benchmark.
Comparing benchmark results of 'plutus-benchmark:lists' on 'cc5447d08' (base) and 'fe81335cd' (PR)
Results table
Script | cc5447d | fe81335 | Change |
---|---|---|---|
sort/ghcSort/10 | 38.13 μs | 39.32 μs | +3.1% |
sort/ghcSort/20 | 89.11 μs | 90.44 μs | +1.5% |
sort/ghcSort/30 | 136.3 μs | 139.3 μs | +2.2% |
sort/ghcSort/40 | 201.5 μs | 203.8 μs | +1.1% |
sort/ghcSort/50 | 244.4 μs | 251.1 μs | +2.7% |
sort/ghcSort/60 | 311.2 μs | 317.5 μs | +2.0% |
sort/ghcSort/70 | 403.3 μs | 411.5 μs | +2.0% |
sort/ghcSort/80 | 458.4 μs | 466.4 μs | +1.7% |
sort/ghcSort/90 | 516.3 μs | 513.8 μs | -0.5% |
sort/ghcSort/100 | 571.3 μs | 580.2 μs | +1.6% |
sort/ghcSort/110 | 627.6 μs | 638.8 μs | +1.8% |
sort/ghcSort/120 | 713.6 μs | 724.4 μs | +1.5% |
sort/ghcSort/130 | 875.4 μs | 885.1 μs | +1.1% |
sort/ghcSort/140 | 928.4 μs | 940.1 μs | +1.3% |
sort/ghcSort/150 | 993.3 μs | 1.006 ms | +1.3% |
sort/ghcSort/160 | 1.062 ms | 1.073 ms | +1.0% |
sort/ghcSort/170 | 1.119 ms | 1.141 ms | +2.0% |
sort/ghcSort/180 | 1.180 ms | 1.191 ms | +0.9% |
sort/ghcSort/190 | 1.250 ms | 1.267 ms | +1.4% |
sort/ghcSort/200 | 1.345 ms | 1.364 ms | +1.4% |
sort/ghcSort/210 | 1.403 ms | 1.418 ms | +1.1% |
sort/ghcSort/220 | 1.464 ms | 1.490 ms | +1.8% |
sort/ghcSort/230 | 1.563 ms | 1.593 ms | +1.9% |
sort/ghcSort/240 | 1.655 ms | 1.685 ms | +1.8% |
sort/ghcSort/250 | 1.749 ms | 1.768 ms | +1.1% |
sort/ghcSort/260 | 2.006 ms | 2.028 ms | +1.1% |
sort/ghcSort/270 | 2.062 ms | 2.091 ms | +1.4% |
sort/ghcSort/280 | 2.130 ms | 2.159 ms | +1.4% |
sort/ghcSort/290 | 2.195 ms | 2.233 ms | +1.7% |
sort/ghcSort/300 | 2.269 ms | 2.314 ms | +2.0% |
sort/ghcSort/310 | 2.359 ms | 2.387 ms | +1.2% |
sort/ghcSort/320 | 2.422 ms | 2.462 ms | +1.7% |
sort/ghcSort/330 | 2.498 ms | 2.536 ms | +1.5% |
sort/ghcSort/340 | 2.605 ms | 2.607 ms | +0.1% |
sort/ghcSort/350 | 2.639 ms | 2.670 ms | +1.2% |
sort/ghcSort/360 | 2.706 ms | 2.743 ms | +1.4% |
sort/ghcSort/370 | 2.782 ms | 2.829 ms | +1.7% |
sort/ghcSort/380 | 2.886 ms | 2.915 ms | +1.0% |
sort/ghcSort/390 | 3.006 ms | 3.049 ms | +1.4% |
sort/ghcSort/400 | 3.077 ms | 3.120 ms | +1.4% |
sort/ghcSort/410 | 3.121 ms | 3.179 ms | +1.9% |
sort/ghcSort/420 | 3.231 ms | 3.275 ms | +1.4% |
sort/ghcSort/430 | 3.278 ms | 3.342 ms | +2.0% |
sort/ghcSort/440 | 3.371 ms | 3.427 ms | +1.7% |
sort/ghcSort/450 | 3.565 ms | 3.605 ms | +1.1% |
sort/ghcSort/460 | 3.605 ms | 3.664 ms | +1.6% |
sort/ghcSort/470 | 3.696 ms | 3.753 ms | +1.5% |
sort/ghcSort/480 | 3.821 ms | 3.875 ms | +1.4% |
sort/ghcSort/490 | 3.905 ms | 3.960 ms | +1.4% |
sort/ghcSort/500 | 4.012 ms | 4.073 ms | +1.5% |
sort/insertionSort/10 | 35.51 μs | 35.96 μs | +1.3% |
sort/insertionSort/20 | 128.2 μs | 129.9 μs | +1.3% |
sort/insertionSort/30 | 280.8 μs | 280.1 μs | -0.2% |
sort/insertionSort/40 | 492.0 μs | 492.1 μs | +0.0% |
sort/insertionSort/50 | 761.6 μs | 763.8 μs | +0.3% |
sort/insertionSort/60 | 1.130 ms | 1.099 ms | -2.7% |
sort/insertionSort/70 | 1.486 ms | 1.491 ms | +0.3% |
sort/insertionSort/80 | 1.934 ms | 1.934 ms | 0.0% |
sort/insertionSort/90 | 2.446 ms | 2.448 ms | +0.1% |
sort/insertionSort/100 | 3.133 ms | 3.015 ms | -3.8% |
sort/insertionSort/110 | 3.650 ms | 3.647 ms | -0.1% |
sort/insertionSort/120 | 4.493 ms | 4.337 ms | -3.5% |
sort/insertionSort/130 | 5.071 ms | 5.083 ms | +0.2% |
sort/insertionSort/140 | 5.905 ms | 5.878 ms | -0.5% |
sort/insertionSort/150 | 6.746 ms | 6.759 ms | +0.2% |
sort/insertionSort/160 | 7.676 ms | 7.711 ms | +0.5% |
sort/insertionSort/170 | 8.692 ms | 8.678 ms | -0.2% |
sort/insertionSort/180 | 9.787 ms | 9.767 ms | -0.2% |
sort/insertionSort/190 | 11.24 ms | 10.88 ms | -3.2% |
sort/insertionSort/200 | 12.04 ms | 12.04 ms | 0.0% |
sort/insertionSort/210 | 13.35 ms | 13.31 ms | -0.3% |
sort/insertionSort/220 | 15.14 ms | 14.55 ms | -3.9% |
sort/insertionSort/230 | 15.98 ms | 15.97 ms | -0.1% |
sort/insertionSort/240 | 17.38 ms | 17.43 ms | +0.3% |
sort/insertionSort/250 | 18.85 ms | 18.95 ms | +0.5% |
sort/insertionSort/260 | 20.43 ms | 20.46 ms | +0.1% |
sort/insertionSort/270 | 21.96 ms | 22.16 ms | +0.9% |
sort/insertionSort/280 | 23.52 ms | 23.78 ms | +1.1% |
sort/insertionSort/290 | 25.29 ms | 25.51 ms | +0.9% |
sort/insertionSort/300 | 27.10 ms | 27.33 ms | +0.8% |
sort/insertionSort/310 | 29.31 ms | 29.21 ms | -0.3% |
sort/insertionSort/320 | 31.01 ms | 31.18 ms | +0.5% |
sort/insertionSort/330 | 34.19 ms | 33.26 ms | -2.7% |
sort/insertionSort/340 | 35.27 ms | 35.25 ms | -0.1% |
sort/insertionSort/350 | 37.32 ms | 37.41 ms | +0.2% |
sort/insertionSort/360 | 39.57 ms | 39.68 ms | +0.3% |
sort/insertionSort/370 | 41.77 ms | 41.71 ms | -0.1% |
sort/insertionSort/380 | 44.17 ms | 44.24 ms | +0.2% |
sort/insertionSort/390 | 46.47 ms | 46.63 ms | +0.3% |
sort/insertionSort/400 | 49.04 ms | 48.83 ms | -0.4% |
sort/insertionSort/410 | 51.00 ms | 51.60 ms | +1.2% |
sort/insertionSort/420 | 53.89 ms | 53.98 ms | +0.2% |
sort/insertionSort/430 | 56.17 ms | 56.86 ms | +1.2% |
sort/insertionSort/440 | 60.96 ms | 59.59 ms | -2.2% |
sort/insertionSort/450 | 62.18 ms | 62.33 ms | +0.2% |
sort/insertionSort/460 | 65.23 ms | 65.03 ms | -0.3% |
sort/insertionSort/470 | 67.47 ms | 68.22 ms | +1.1% |
sort/insertionSort/480 | 70.19 ms | 70.99 ms | +1.1% |
sort/insertionSort/490 | 74.01 ms | 74.23 ms | +0.3% |
sort/insertionSort/500 | 77.00 ms | 77.13 ms | +0.2% |
sort/mergeSort/10 | 90.73 μs | 94.11 μs | +3.7% |
sort/mergeSort/20 | 220.7 μs | 227.7 μs | +3.2% |
sort/mergeSort/30 | 363.6 μs | 376.2 μs | +3.5% |
sort/mergeSort/40 | 514.2 μs | 533.3 μs | +3.7% |
sort/mergeSort/50 | 672.4 μs | 693.9 μs | +3.2% |
sort/mergeSort/60 | 847.5 μs | 872.2 μs | +2.9% |
sort/mergeSort/70 | 1.014 ms | 1.049 ms | +3.5% |
sort/mergeSort/80 | 1.224 ms | 1.232 ms | +0.7% |
sort/mergeSort/90 | 1.380 ms | 1.417 ms | +2.7% |
sort/mergeSort/100 | 1.549 ms | 1.604 ms | +3.6% |
sort/mergeSort/110 | 1.743 ms | 1.790 ms | +2.7% |
sort/mergeSort/120 | 1.935 ms | 1.993 ms | +3.0% |
sort/mergeSort/130 | 2.161 ms | 2.218 ms | +2.6% |
sort/mergeSort/140 | 2.312 ms | 2.398 ms | +3.7% |
sort/mergeSort/150 | 2.506 ms | 2.575 ms | +2.8% |
sort/mergeSort/160 | 2.723 ms | 2.795 ms | +2.6% |
sort/mergeSort/170 | 2.905 ms | 2.985 ms | +2.8% |
sort/mergeSort/180 | 3.108 ms | 3.200 ms | +3.0% |
sort/mergeSort/190 | 3.392 ms | 3.416 ms | +0.7% |
sort/mergeSort/200 | 3.513 ms | 3.609 ms | +2.7% |
sort/mergeSort/210 | 3.743 ms | 3.834 ms | +2.4% |
sort/mergeSort/220 | 3.913 ms | 4.028 ms | +2.9% |
sort/mergeSort/230 | 4.137 ms | 4.251 ms | +2.8% |
sort/mergeSort/240 | 4.353 ms | 4.477 ms | +2.8% |
sort/mergeSort/250 | 4.595 ms | 4.731 ms | +3.0% |
sort/mergeSort/260 | 4.823 ms | 4.970 ms | +3.0% |
sort/mergeSort/270 | 4.979 ms | 5.128 ms | +3.0% |
sort/mergeSort/280 | 5.198 ms | 5.348 ms | +2.9% |
sort/mergeSort/290 | 5.399 ms | 5.541 ms | +2.6% |
sort/mergeSort/300 | 5.608 ms | 5.762 ms | +2.7% |
sort/mergeSort/310 | 5.808 ms | 5.971 ms | +2.8% |
sort/mergeSort/320 | 6.066 ms | 6.249 ms | +3.0% |
sort/mergeSort/330 | 6.234 ms | 6.438 ms | +3.3% |
sort/mergeSort/340 | 6.473 ms | 6.666 ms | +3.0% |
sort/mergeSort/350 | 6.704 ms | 6.903 ms | +3.0% |
sort/mergeSort/360 | 6.902 ms | 7.135 ms | +3.4% |
sort/mergeSort/370 | 7.166 ms | 7.381 ms | +3.0% |
sort/mergeSort/380 | 7.335 ms | 7.607 ms | +3.7% |
sort/mergeSort/390 | 7.774 ms | 7.838 ms | +0.8% |
sort/mergeSort/400 | 7.799 ms | 8.024 ms | +2.9% |
sort/mergeSort/410 | 8.051 ms | 8.298 ms | +3.1% |
sort/mergeSort/420 | 8.355 ms | 8.541 ms | +2.2% |
sort/mergeSort/430 | 8.649 ms | 8.790 ms | +1.6% |
sort/mergeSort/440 | 8.718 ms | 8.943 ms | +2.6% |
sort/mergeSort/450 | 8.964 ms | 9.182 ms | +2.4% |
sort/mergeSort/460 | 9.209 ms | 9.423 ms | +2.3% |
sort/mergeSort/470 | 9.544 ms | 9.691 ms | +1.5% |
sort/mergeSort/480 | 9.655 ms | 9.941 ms | +3.0% |
sort/mergeSort/490 | 10.01 ms | 10.18 ms | +1.7% |
sort/mergeSort/500 | 10.21 ms | 10.49 ms | +2.7% |
sort/quickSort/10 | 83.21 μs | 82.65 μs | -0.7% |
sort/quickSort/20 | 305.7 μs | 308.0 μs | +0.8% |
sort/quickSort/30 | 671.9 μs | 674.1 μs | +0.3% |
sort/quickSort/40 | 1.205 ms | 1.209 ms | +0.3% |
sort/quickSort/50 | 1.891 ms | 1.889 ms | -0.1% |
sort/quickSort/60 | 2.728 ms | 2.733 ms | +0.2% |
sort/quickSort/70 | 3.716 ms | 3.730 ms | +0.4% |
sort/quickSort/80 | 4.868 ms | 4.875 ms | +0.1% |
sort/quickSort/90 | 6.167 ms | 6.194 ms | +0.4% |
sort/quickSort/100 | 7.533 ms | 7.547 ms | +0.2% |
sort/quickSort/110 | 9.292 ms | 9.173 ms | -1.3% |
sort/quickSort/120 | 10.89 ms | 10.91 ms | +0.2% |
sort/quickSort/130 | 12.77 ms | 12.78 ms | +0.1% |
sort/quickSort/140 | 14.69 ms | 14.74 ms | +0.3% |
sort/quickSort/150 | 16.95 ms | 17.06 ms | +0.6% |
sort/quickSort/160 | 19.23 ms | 19.32 ms | +0.5% |
sort/quickSort/170 | 21.62 ms | 21.76 ms | +0.6% |
sort/quickSort/180 | 24.27 ms | 24.40 ms | +0.5% |
sort/quickSort/190 | 27.06 ms | 27.15 ms | +0.3% |
sort/quickSort/200 | 30.06 ms | 29.82 ms | -0.8% |
sort/quickSort/210 | 33.06 ms | 33.00 ms | -0.2% |
sort/quickSort/220 | 36.32 ms | 36.33 ms | +0.0% |
sort/quickSort/230 | 39.51 ms | 39.57 ms | +0.2% |
sort/quickSort/240 | 43.09 ms | 43.08 ms | -0.0% |
sort/quickSort/250 | 46.62 ms | 46.69 ms | +0.2% |
sort/quickSort/260 | 50.54 ms | 50.49 ms | -0.1% |
sort/quickSort/270 | 54.44 ms | 54.39 ms | -0.1% |
sort/quickSort/280 | 58.52 ms | 58.66 ms | +0.2% |
sort/quickSort/290 | 62.77 ms | 62.91 ms | +0.2% |
sort/quickSort/300 | 67.13 ms | 67.26 ms | +0.2% |
sort/quickSort/310 | 71.96 ms | 71.90 ms | -0.1% |
sort/quickSort/320 | 76.68 ms | 76.43 ms | -0.3% |
sort/quickSort/330 | 81.58 ms | 81.34 ms | -0.3% |
sort/quickSort/340 | 86.90 ms | 86.63 ms | -0.3% |
sort/quickSort/350 | 91.59 ms | 92.17 ms | +0.6% |
sort/quickSort/360 | 97.37 ms | 97.53 ms | +0.2% |
sort/quickSort/370 | 102.8 ms | 102.9 ms | +0.1% |
sort/quickSort/380 | 108.4 ms | 108.7 ms | +0.3% |
sort/quickSort/390 | 114.5 ms | 114.8 ms | +0.3% |
sort/quickSort/400 | 120.4 ms | 120.8 ms | +0.3% |
sort/quickSort/410 | 126.5 ms | 126.8 ms | +0.2% |
sort/quickSort/420 | 133.0 ms | 133.1 ms | +0.1% |
sort/quickSort/430 | 140.1 ms | 139.4 ms | -0.5% |
sort/quickSort/440 | 146.0 ms | 146.6 ms | +0.4% |
sort/quickSort/450 | 152.8 ms | 153.4 ms | +0.4% |
sort/quickSort/460 | 160.6 ms | 160.4 ms | -0.1% |
sort/quickSort/470 | 166.9 ms | 167.9 ms | +0.6% |
sort/quickSort/480 | 175.0 ms | 175.0 ms | 0.0% |
sort/quickSort/490 | 182.4 ms | 182.1 ms | -0.2% |
sort/quickSort/500 | 189.4 ms | 190.2 ms | +0.4% |
sum/compiled-from-Haskell/sum-right-builtin/10 | 8.686 μs | 7.218 μs | -16.9% |
sum/compiled-from-Haskell/sum-right-builtin/50 | 40.68 μs | 33.27 μs | -18.2% |
sum/compiled-from-Haskell/sum-right-builtin/100 | 82.05 μs | 67.45 μs | -17.8% |
sum/compiled-from-Haskell/sum-right-builtin/500 | 443.3 μs | 363.8 μs | -17.9% |
sum/compiled-from-Haskell/sum-right-builtin/1000 | 981.2 μs | 799.4 μs | -18.5% |
sum/compiled-from-Haskell/sum-right-builtin/5000 | 6.830 ms | 6.016 ms | -11.9% |
sum/compiled-from-Haskell/sum-right-builtin/10000 | 15.18 ms | 13.94 ms | -8.2% |
sum/compiled-from-Haskell/sum-right-Scott/10 | 6.915 μs | 7.176 μs | +3.8% |
sum/compiled-from-Haskell/sum-right-Scott/50 | 31.62 μs | 33.37 μs | +5.5% |
sum/compiled-from-Haskell/sum-right-Scott/100 | 63.22 μs | 67.46 μs | +6.7% |
sum/compiled-from-Haskell/sum-right-Scott/500 | 339.0 μs | 359.5 μs | +6.0% |
sum/compiled-from-Haskell/sum-right-Scott/1000 | 744.4 μs | 787.1 μs | +5.7% |
sum/compiled-from-Haskell/sum-right-Scott/5000 | 5.706 ms | 6.027 ms | +5.6% |
sum/compiled-from-Haskell/sum-right-Scott/10000 | 14.00 ms | 14.42 ms | +3.0% |
sum/compiled-from-Haskell/sum-right-data/10 | 21.02 μs | 17.48 μs | -16.8% |
sum/compiled-from-Haskell/sum-right-data/50 | 100.4 μs | 85.02 μs | -15.3% |
sum/compiled-from-Haskell/sum-right-data/100 | 202.3 μs | 170.0 μs | -16.0% |
sum/compiled-from-Haskell/sum-right-data/500 | 1.144 ms | 925.2 μs | -19.1% |
sum/compiled-from-Haskell/sum-right-data/1000 | 2.661 ms | 2.132 ms | -19.9% |
sum/compiled-from-Haskell/sum-right-data/5000 | 15.33 ms | 12.34 ms | -19.5% |
sum/compiled-from-Haskell/sum-right-data/10000 | 32.15 ms | 25.89 ms | -19.5% |
sum/compiled-from-Haskell/sum-left-builtin/10 | 8.399 μs | 6.967 μs | -17.0% |
sum/compiled-from-Haskell/sum-left-builtin/50 | 39.81 μs | 32.34 μs | -18.8% |
sum/compiled-from-Haskell/sum-left-builtin/100 | 79.41 μs | 65.06 μs | -18.1% |
sum/compiled-from-Haskell/sum-left-builtin/500 | 425.8 μs | 346.5 μs | -18.6% |
sum/compiled-from-Haskell/sum-left-builtin/1000 | 948.6 μs | 763.8 μs | -19.5% |
sum/compiled-from-Haskell/sum-left-builtin/5000 | 6.699 ms | 5.863 ms | -12.5% |
sum/compiled-from-Haskell/sum-left-builtin/10000 | 14.59 ms | 13.23 ms | -9.3% |
sum/compiled-from-Haskell/sum-left-Scott/10 | 6.709 μs | 7.093 μs | +5.7% |
sum/compiled-from-Haskell/sum-left-Scott/50 | 31.10 μs | 32.60 μs | +4.8% |
sum/compiled-from-Haskell/sum-left-Scott/100 | 62.80 μs | 64.96 μs | +3.4% |
sum/compiled-from-Haskell/sum-left-Scott/500 | 331.2 μs | 341.6 μs | +3.1% |
sum/compiled-from-Haskell/sum-left-Scott/1000 | 722.8 μs | 748.2 μs | +3.5% |
sum/compiled-from-Haskell/sum-left-Scott/5000 | 5.842 ms | 5.958 ms | +2.0% |
sum/compiled-from-Haskell/sum-left-Scott/10000 | 13.23 ms | 13.45 ms | +1.7% |
sum/compiled-from-Haskell/sum-left-data/10 | 21.86 μs | 17.69 μs | -19.1% |
sum/compiled-from-Haskell/sum-left-data/50 | 105.0 μs | 84.94 μs | -19.1% |
sum/compiled-from-Haskell/sum-left-data/100 | 208.8 μs | 169.1 μs | -19.0% |
sum/compiled-from-Haskell/sum-left-data/500 | 1.175 ms | 906.4 μs | -22.9% |
sum/compiled-from-Haskell/sum-left-data/1000 | 2.713 ms | 2.070 ms | -23.7% |
sum/compiled-from-Haskell/sum-left-data/5000 | 15.42 ms | 11.83 ms | -23.3% |
sum/compiled-from-Haskell/sum-left-data/10000 | 32.21 ms | 24.61 ms | -23.6% |
sum/hand-written-PLC/sum-right-builtin/10 | 8.660 μs | 7.364 μs | -15.0% |
sum/hand-written-PLC/sum-right-builtin/50 | 38.40 μs | 34.47 μs | -10.2% |
sum/hand-written-PLC/sum-right-builtin/100 | 76.19 μs | 68.38 μs | -10.3% |
sum/hand-written-PLC/sum-right-builtin/500 | 386.9 μs | 342.2 μs | -11.6% |
sum/hand-written-PLC/sum-right-builtin/1000 | 807.9 μs | 703.1 μs | -13.0% |
sum/hand-written-PLC/sum-right-builtin/5000 | 4.760 ms | 4.273 ms | -10.2% |
sum/hand-written-PLC/sum-right-builtin/10000 | 9.833 ms | 8.879 ms | -9.7% |
sum/hand-written-PLC/sum-right-Scott/10 | 5.632 μs | 6.027 μs | +7.0% |
sum/hand-written-PLC/sum-right-Scott/50 | 24.92 μs | 26.38 μs | +5.9% |
sum/hand-written-PLC/sum-right-Scott/100 | 48.07 μs | 50.89 μs | +5.9% |
sum/hand-written-PLC/sum-right-Scott/500 | 247.4 μs | 261.7 μs | +5.8% |
sum/hand-written-PLC/sum-right-Scott/1000 | 514.1 μs | 549.9 μs | +7.0% |
sum/hand-written-PLC/sum-right-Scott/5000 | 3.635 ms | 3.836 ms | +5.5% |
sum/hand-written-PLC/sum-right-Scott/10000 | 8.080 ms | 8.566 ms | +6.0% |
sum/hand-written-PLC/sum-left-builtin/10 | 8.948 μs | 8.214 μs | -8.2% |
sum/hand-written-PLC/sum-left-builtin/50 | 41.08 μs | 36.45 μs | -11.3% |
sum/hand-written-PLC/sum-left-builtin/100 | 81.37 μs | 72.25 μs | -11.2% |
sum/hand-written-PLC/sum-left-builtin/500 | 394.7 μs | 351.7 μs | -10.9% |
sum/hand-written-PLC/sum-left-builtin/1000 | 776.2 μs | 697.6 μs | -10.1% |
sum/hand-written-PLC/sum-left-builtin/5000 | 3.837 ms | 3.452 ms | -10.0% |
sum/hand-written-PLC/sum-left-builtin/10000 | 7.673 ms | 6.876 ms | -10.4% |
sum/hand-written-PLC/sum-left-Scott/10 | 5.869 μs | 6.031 μs | +2.8% |
sum/hand-written-PLC/sum-left-Scott/50 | 26.91 μs | 28.18 μs | +4.7% |
sum/hand-written-PLC/sum-left-Scott/100 | 52.93 μs | 56.06 μs | +5.9% |
sum/hand-written-PLC/sum-left-Scott/500 | 268.0 μs | 278.5 μs | +3.9% |
sum/hand-written-PLC/sum-left-Scott/1000 | 543.9 μs | 565.6 μs | +4.0% |
sum/hand-written-PLC/sum-left-Scott/5000 | 3.313 ms | 3.442 ms | +3.9% |
sum/hand-written-PLC/sum-left-Scott/10000 | 6.870 ms | 7.083 ms | +3.1% |