Skip to content

Use UArray instead of Set for builtin availability check#7736

Open
zeme-wana wants to merge 3 commits into
masterfrom
naughty-tesla-3c6207
Open

Use UArray instead of Set for builtin availability check#7736
zeme-wana wants to merge 3 commits into
masterfrom
naughty-tesla-3c6207

Conversation

@zeme-wana

@zeme-wana zeme-wana commented Apr 23, 2026

Copy link
Copy Markdown
Collaborator

Summary

Addresses the TODO in SerialisedScript.hs:215 suggesting a better data structure for the builtin availability check in scriptCBORDecoder.

Previously checkBuiltin did an O(log n) Set.member on a Set DefaultFun. DefaultFun already derives Ix, so a UArray DefaultFun Bool gives a true O(1) unboxed array index with no fromEnum/hash at the lookup site (GHC's Ix instance handles the offset).

The builtin availability check in `scriptCBORDecoder` was using
`Set DefaultFun` for O(log n) membership, with a TODO suggesting
`IntSet`. A `UArray DefaultFun Bool` is a better fit: since
`DefaultFun` derives `Ix`, lookup is a true O(1) unboxed array index
with no conversion at the lookup site.

The array is built once per call via `runSTUArray`, folding over the
`Set` through its `Foldable` instance (no intermediate list). The
array covers all ~100 `DefaultFun` constructors.
@zeme-wana zeme-wana self-assigned this Apr 23, 2026
@zeme-wana zeme-wana added the No Changelog Required Add this to skip the Changelog Check label Apr 23, 2026
@zliu41

zliu41 commented Apr 23, 2026

Copy link
Copy Markdown
Member

Unclear this is an improvement. Try validation-decode and validation-full benchmarks.

@zeme-wana zeme-wana requested review from Unisay and zliu41 April 23, 2026 13:56
@zeme-wana

Copy link
Copy Markdown
Collaborator Author

/benchmark validation-decode

@zeme-wana

Copy link
Copy Markdown
Collaborator Author

/benchmark validation-full

@github-actions

Copy link
Copy Markdown
Contributor

Click here to check the status of your benchmark.

@github-actions

Copy link
Copy Markdown
Contributor

Comparing benchmark results of 'validation-decode' on '0468c1c57d' (base) and 'f2742c451c' (PR)

Results table
Script 0468c1c f2742c4 Change
auction_1-1 201.3 μs 186.8 μs -7.2%
auction_1-2 547.7 μs 571.9 μs +4.4%
auction_1-3 547.4 μs 569.6 μs +4.1%
auction_1-4 201.0 μs 186.8 μs -7.1%
auction_2-1 200.3 μs 186.4 μs -6.9%
auction_2-2 547.4 μs 569.1 μs +4.0%
auction_2-3 545.5 μs 569.8 μs +4.5%
auction_2-4 547.3 μs 568.8 μs +3.9%
auction_2-5 201.3 μs 186.1 μs -7.6%
coop-1 114.0 μs 106.5 μs -6.6%
coop-2 253.1 μs 241.6 μs -4.5%
coop-3 251.7 μs 243.1 μs -3.4%
coop-4 297.2 μs 287.0 μs -3.4%
coop-5 297.5 μs 288.4 μs -3.1%
coop-6 133.0 μs 124.3 μs -6.5%
coop-7 132.9 μs 124.1 μs -6.6%
crowdfunding-success-1 243.8 μs 256.0 μs +5.0%
crowdfunding-success-2 243.3 μs 229.3 μs -5.8%
crowdfunding-success-3 242.4 μs 229.8 μs -5.2%
currency-1 238.6 μs 225.3 μs -5.6%
escrow-redeem_1-1 322.9 μs 312.5 μs -3.2%
escrow-redeem_1-2 322.4 μs 305.3 μs -5.3%
escrow-redeem_2-1 322.8 μs 305.8 μs -5.3%
escrow-redeem_2-2 322.4 μs 303.9 μs -5.7%
escrow-redeem_2-3 322.4 μs 304.8 μs -5.5%
escrow-refund-1 321.1 μs 304.6 μs -5.1%
future-increase-margin-1 237.8 μs 226.6 μs -4.7%
future-increase-margin-2 326.9 μs 307.6 μs -5.9%
future-increase-margin-3 327.2 μs 311.4 μs -4.8%
future-increase-margin-4 688.0 μs 659.2 μs -4.2%
future-increase-margin-5 687.4 μs 664.2 μs -3.4%
future-pay-out-1 237.6 μs 224.8 μs -5.4%
future-pay-out-2 326.4 μs 308.2 μs -5.6%
future-pay-out-3 326.0 μs 308.0 μs -5.5%
future-pay-out-4 684.3 μs 658.9 μs -3.7%
future-settle-early-1 237.5 μs 226.6 μs -4.6%
future-settle-early-2 325.4 μs 307.7 μs -5.4%
future-settle-early-3 327.2 μs 308.6 μs -5.7%
future-settle-early-4 685.9 μs 659.8 μs -3.8%
game-sm-success_1-1 529.4 μs 508.9 μs -3.9%
game-sm-success_1-2 171.8 μs 160.3 μs -6.7%
game-sm-success_1-3 527.7 μs 510.1 μs -3.3%
game-sm-success_1-4 172.0 μs 159.7 μs -7.2%
game-sm-success_2-1 528.7 μs 508.8 μs -3.8%
game-sm-success_2-2 172.4 μs 159.9 μs -7.3%
game-sm-success_2-3 530.0 μs 509.3 μs -3.9%
game-sm-success_2-4 172.9 μs 160.3 μs -7.3%
game-sm-success_2-5 529.8 μs 508.4 μs -4.0%
game-sm-success_2-6 172.7 μs 159.6 μs -7.6%
guardrail-sorted-large 115.7 μs 116.7 μs +0.9%
guardrail-sorted-small 115.8 μs 116.4 μs +0.5%
guardrail-unsorted-large 114.8 μs 111.6 μs -2.8%
guardrail-unsorted-small 115.1 μs 111.7 μs -3.0%
multisig-sm-01 588.0 μs 571.0 μs -2.9%
multisig-sm-02 587.3 μs 571.0 μs -2.8%
multisig-sm-03 588.5 μs 572.2 μs -2.8%
multisig-sm-04 587.6 μs 566.6 μs -3.6%
multisig-sm-05 585.6 μs 570.5 μs -2.6%
multisig-sm-06 587.1 μs 565.2 μs -3.7%
multisig-sm-07 586.4 μs 569.9 μs -2.8%
multisig-sm-08 586.2 μs 568.2 μs -3.1%
multisig-sm-09 588.4 μs 570.0 μs -3.1%
multisig-sm-10 586.1 μs 566.3 μs -3.4%
ping-pong-1 493.1 μs 471.5 μs -4.4%
ping-pong-2 493.0 μs 471.1 μs -4.4%
ping-pong_2-1 493.1 μs 471.5 μs -4.4%
prism-1 166.9 μs 154.7 μs -7.3%
prism-2 520.8 μs 499.6 μs -4.1%
prism-3 242.3 μs 227.0 μs -6.3%
pubkey-1 173.5 μs 162.1 μs -6.6%
stablecoin_1-1 877.8 μs 843.0 μs -4.0%
stablecoin_1-2 173.1 μs 160.5 μs -7.3%
stablecoin_1-3 876.6 μs 840.6 μs -4.1%
stablecoin_1-4 172.6 μs 159.6 μs -7.5%
stablecoin_1-5 876.6 μs 850.5 μs -3.0%
stablecoin_1-6 173.1 μs 159.8 μs -7.7%
stablecoin_2-1 878.0 μs 842.3 μs -4.1%
stablecoin_2-2 172.7 μs 160.4 μs -7.1%
stablecoin_2-3 875.3 μs 843.0 μs -3.7%
stablecoin_2-4 172.8 μs 159.9 μs -7.5%
token-account-1 239.8 μs 225.4 μs -6.0%
token-account-2 226.8 μs 206.2 μs -9.1%
uniswap-1 242.8 μs 227.7 μs -6.2%
uniswap-2 240.3 μs 224.3 μs -6.7%
uniswap-3 746.0 μs 703.3 μs -5.7%
uniswap-4 207.3 μs 173.0 μs -16.5%
uniswap-5 744.3 μs 703.4 μs -5.5%
uniswap-6 185.6 μs 173.2 μs -6.7%
vesting-1 330.9 μs 312.7 μs -5.5%
0468c1c f2742c4 Change
TOTAL 34.17 ms 32.88 ms -3.8%

@github-actions

Copy link
Copy Markdown
Contributor

Click here to check the status of your benchmark.

@Unisay Unisay left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice cleanup on the TODO.

Worth noting that the lookup is O(1) now, but the array itself gets rebuilt on every scriptCBORDecoder call. (ll, pv) ranges over a small finite set (four ledger languages times the handful of known protocol versions), so caching the array at module level costs almost nothing. Each decode then does a Map lookup instead of newArray plus a mapM_ over the Set.

Roughly:

availableBuiltinsArr
  :: PlutusLedgerLanguage -> MajorProtocolVersion -> UArray DefaultFun Bool
availableBuiltinsArr =
  let cache = Map.fromList
        [((ll, pv), build ll pv) | ll <- [minBound .. maxBound], pv <- knownPVs]
      build ll pv = runSTUArray $ do
        arr <- newArray (minBound, maxBound) False
        mapM_ (\f -> writeArray arr f True) (builtinsAvailableIn ll pv)
        pure arr
  in \ll pv -> Map.findWithDefault emptyArr (ll, pv) cache

MajorProtocolVersion doesn't have a meaningful Bounded instance, so knownPVs has to be listed by hand from Common/Versions.hs: alonzoPV, vasilPV, changPV, plominPV, vanRossemPV.

Whichever variant lands, it would be nice to see the win show up in plutus-benchmark:validation numbers before merging.

@github-actions

Copy link
Copy Markdown
Contributor

Comparing benchmark results of 'validation-full' on '0468c1c57d' (base) and 'f2742c451c' (PR)

Results table
Script 0468c1c f2742c4 Change
auction_1-1 441.3 μs 428.4 μs -2.9%
auction_1-2 1.412 ms 1.404 ms -0.6%
auction_1-3 1.417 ms 1.402 ms -1.1%
auction_1-4 489.3 μs 480.3 μs -1.8%
auction_2-1 434.6 μs 427.8 μs -1.6%
auction_2-2 1.410 ms 1.401 ms -0.6%
auction_2-3 1.634 ms 1.619 ms -0.9%
auction_2-4 1.408 ms 1.396 ms -0.9%
auction_2-5 488.1 μs 479.0 μs -1.9%
coop-1 378.7 μs 382.2 μs +0.9%
coop-2 1.136 ms 1.122 ms -1.2%
coop-3 2.608 ms 2.598 ms -0.4%
coop-4 1.412 ms 1.401 ms -0.8%
coop-5 799.3 μs 789.5 μs -1.2%
coop-6 883.1 μs 898.5 μs +1.7%
coop-7 506.9 μs 503.6 μs -0.7%
crowdfunding-success-1 526.6 μs 515.8 μs -2.1%
crowdfunding-success-2 533.1 μs 515.6 μs -3.3%
crowdfunding-success-3 532.3 μs 516.3 μs -3.0%
currency-1 556.9 μs 547.0 μs -1.8%
escrow-redeem_1-1 776.7 μs 769.6 μs -0.9%
escrow-redeem_1-2 776.5 μs 770.3 μs -0.8%
escrow-redeem_2-1 833.1 μs 828.8 μs -0.5%
escrow-redeem_2-2 833.7 μs 828.9 μs -0.6%
escrow-redeem_2-3 833.7 μs 828.5 μs -0.6%
escrow-refund-1 578.4 μs 566.4 μs -2.1%
future-increase-margin-1 557.3 μs 545.2 μs -2.2%
future-increase-margin-2 967.8 μs 961.9 μs -0.6%
future-increase-margin-3 968.6 μs 962.9 μs -0.6%
future-increase-margin-4 1.447 ms 1.428 ms -1.3%
future-increase-margin-5 1.826 ms 1.802 ms -1.3%
future-pay-out-1 556.8 μs 545.0 μs -2.1%
future-pay-out-2 971.1 μs 962.1 μs -0.9%
future-pay-out-3 967.7 μs 961.6 μs -0.6%
future-pay-out-4 1.815 ms 1.806 ms -0.5%
future-settle-early-1 557.0 μs 544.8 μs -2.2%
future-settle-early-2 966.7 μs 962.1 μs -0.5%
future-settle-early-3 967.7 μs 961.1 μs -0.7%
future-settle-early-4 1.586 ms 1.569 ms -1.1%
game-sm-success_1-1 1.120 ms 1.095 ms -2.2%
game-sm-success_1-2 421.2 μs 410.5 μs -2.5%
game-sm-success_1-3 1.395 ms 1.374 ms -1.5%
game-sm-success_1-4 453.6 μs 439.0 μs -3.2%
game-sm-success_2-1 1.117 ms 1.094 ms -2.1%
game-sm-success_2-2 423.3 μs 410.2 μs -3.1%
game-sm-success_2-3 1.396 ms 1.374 ms -1.6%
game-sm-success_2-4 453.3 μs 439.5 μs -3.0%
game-sm-success_2-5 1.394 ms 1.376 ms -1.3%
game-sm-success_2-6 453.4 μs 440.0 μs -3.0%
guardrail-sorted-large 588.6 μs 578.1 μs -1.8%
guardrail-sorted-small 204.4 μs 199.7 μs -2.3%
guardrail-unsorted-large 744.1 μs 738.9 μs -0.7%
guardrail-unsorted-small 197.4 μs 193.6 μs -1.9%
multisig-sm-01 1.203 ms 1.190 ms -1.1%
multisig-sm-02 1.191 ms 1.180 ms -0.9%
multisig-sm-03 1.195 ms 1.182 ms -1.1%
multisig-sm-04 1.200 ms 1.189 ms -0.9%
multisig-sm-05 1.378 ms 1.369 ms -0.7%
multisig-sm-06 1.201 ms 1.189 ms -1.0%
multisig-sm-07 1.190 ms 1.180 ms -0.8%
multisig-sm-08 1.194 ms 1.181 ms -1.1%
multisig-sm-09 1.203 ms 1.188 ms -1.2%
multisig-sm-10 1.379 ms 1.368 ms -0.8%
ping-pong-1 1.076 ms 1.007 ms -6.4%
ping-pong-2 1.077 ms 1.007 ms -6.5%
ping-pong_2-1 856.6 μs 840.2 μs -1.9%
prism-1 380.6 μs 368.0 μs -3.3%
prism-2 1.129 ms 1.117 ms -1.1%
prism-3 684.2 μs 672.4 μs -1.7%
pubkey-1 360.3 μs 351.0 μs -2.6%
stablecoin_1-1 2.261 ms 2.244 ms -0.8%
stablecoin_1-2 415.6 μs 404.1 μs -2.8%
stablecoin_1-3 2.437 ms 2.413 ms -1.0%
stablecoin_1-4 429.4 μs 416.2 μs -3.1%
stablecoin_1-5 2.792 ms 2.771 ms -0.8%
stablecoin_1-6 477.5 μs 464.7 μs -2.7%
stablecoin_2-1 2.272 ms 2.243 ms -1.3%
stablecoin_2-2 415.1 μs 404.2 μs -2.6%
stablecoin_2-3 2.432 ms 2.414 ms -0.7%
stablecoin_2-4 428.9 μs 416.9 μs -2.8%
token-account-1 496.1 μs 486.2 μs -2.0%
token-account-2 616.2 μs 606.0 μs -1.7%
uniswap-1 711.9 μs 700.6 μs -1.6%
uniswap-2 530.8 μs 521.9 μs -1.7%
uniswap-3 2.951 ms 2.902 ms -1.7%
uniswap-4 571.7 μs 571.7 μs 0.0%
uniswap-5 2.235 ms 2.194 ms -1.8%
uniswap-6 556.8 μs 545.3 μs -2.1%
vesting-1 784.8 μs 774.6 μs -1.3%
0468c1c f2742c4 Change
TOTAL 89.87 ms 88.67 ms -1.3%

@zliu41

zliu41 commented Apr 28, 2026

Copy link
Copy Markdown
Member

I'll defer this to @kwxm

@kwxm kwxm self-requested a review May 14, 2026 09:59
@kwxm

kwxm commented May 21, 2026

Copy link
Copy Markdown
Contributor

/benchmark validation-decode

@github-actions

Copy link
Copy Markdown
Contributor

Click here to check the status of your benchmark.

@kwxm

kwxm commented May 21, 2026

Copy link
Copy Markdown
Contributor

/benchmark validation-decode

1 similar comment
@kwxm

kwxm commented May 21, 2026

Copy link
Copy Markdown
Contributor

/benchmark validation-decode

@github-actions

Copy link
Copy Markdown
Contributor

Comparing benchmark results of 'validation-decode' on '778504b86f' (base) and '7069dba7a4' (PR)

Results table
Script 778504b 7069dba Change
auction_1-1 204.9 μs 195.8 μs -4.4%
auction_1-2 560.6 μs 584.9 μs +4.3%
auction_1-3 563.6 μs 582.4 μs +3.3%
auction_1-4 206.6 μs 196.5 μs -4.9%
auction_2-1 207.3 μs 194.4 μs -6.2%
auction_2-2 559.4 μs 580.0 μs +3.7%
auction_2-3 561.2 μs 579.1 μs +3.2%
auction_2-4 558.3 μs 577.5 μs +3.4%
auction_2-5 205.6 μs 197.6 μs -3.9%
coop-1 119.8 μs 112.2 μs -6.3%
coop-2 263.4 μs 254.1 μs -3.5%
coop-3 263.5 μs 258.6 μs -1.9%
coop-4 312.9 μs 301.0 μs -3.8%
coop-5 312.4 μs 297.7 μs -4.7%
coop-6 139.4 μs 130.7 μs -6.2%
coop-7 140.3 μs 130.4 μs -7.1%
crowdfunding-success-1 246.3 μs 247.0 μs +0.3%
crowdfunding-success-2 247.2 μs 261.2 μs +5.7%
crowdfunding-success-3 246.6 μs 265.4 μs +7.6%
currency-1 243.7 μs 235.8 μs -3.2%
escrow-redeem_1-1 328.2 μs 313.1 μs -4.6%
escrow-redeem_1-2 327.7 μs 314.5 μs -4.0%
escrow-redeem_2-1 327.3 μs 314.0 μs -4.1%
escrow-redeem_2-2 328.5 μs 314.4 μs -4.3%
escrow-redeem_2-3 326.7 μs 315.2 μs -3.5%
escrow-refund-1 327.7 μs 313.1 μs -4.5%
future-increase-margin-1 243.1 μs 236.1 μs -2.9%
future-increase-margin-2 330.4 μs 318.2 μs -3.7%
future-increase-margin-3 331.3 μs 340.6 μs +2.8%
future-increase-margin-4 712.3 μs 679.9 μs -4.5%
future-increase-margin-5 711.3 μs 765.1 μs +7.6%
future-pay-out-1 242.6 μs 234.7 μs -3.3%
future-pay-out-2 331.1 μs 323.7 μs -2.2%
future-pay-out-3 331.0 μs 319.6 μs -3.4%
future-pay-out-4 757.5 μs 764.2 μs +0.9%
future-settle-early-1 242.5 μs 234.3 μs -3.4%
future-settle-early-2 331.6 μs 319.4 μs -3.7%
future-settle-early-3 331.1 μs 335.7 μs +1.4%
future-settle-early-4 782.5 μs 764.6 μs -2.3%
game-sm-success_1-1 539.9 μs 524.3 μs -2.9%
game-sm-success_1-2 174.5 μs 176.6 μs +1.2%
game-sm-success_1-3 543.2 μs 523.2 μs -3.7%
game-sm-success_1-4 174.4 μs 167.1 μs -4.2%
game-sm-success_2-1 542.9 μs 525.7 μs -3.2%
game-sm-success_2-2 175.5 μs 185.6 μs +5.8%
game-sm-success_2-3 538.1 μs 528.3 μs -1.8%
game-sm-success_2-4 174.7 μs 167.2 μs -4.3%
game-sm-success_2-5 540.6 μs 525.7 μs -2.8%
game-sm-success_2-6 174.7 μs 166.8 μs -4.5%
guardrail-sorted-large 128.0 μs 126.0 μs -1.6%
guardrail-sorted-small 127.6 μs 137.1 μs +7.4%
guardrail-unsorted-large 126.5 μs 126.5 μs 0.0%
guardrail-unsorted-small 126.4 μs 126.6 μs +0.2%
multisig-sm-01 605.7 μs 587.8 μs -3.0%
multisig-sm-02 604.8 μs 577.3 μs -4.5%
multisig-sm-03 608.5 μs 580.0 μs -4.7%
multisig-sm-04 612.5 μs 582.7 μs -4.9%
multisig-sm-05 605.0 μs 584.7 μs -3.4%
multisig-sm-06 606.0 μs 580.1 μs -4.3%
multisig-sm-07 603.4 μs 577.2 μs -4.3%
multisig-sm-08 605.2 μs 575.2 μs -5.0%
multisig-sm-09 606.1 μs 576.8 μs -4.8%
multisig-sm-10 604.5 μs 577.6 μs -4.4%
ping-pong-1 505.8 μs 492.5 μs -2.6%
ping-pong-2 512.5 μs 494.2 μs -3.6%
ping-pong_2-1 505.8 μs 490.7 μs -3.0%
prism-1 170.6 μs 180.3 μs +5.7%
prism-2 554.9 μs 513.5 μs -7.5%
prism-3 249.0 μs 233.3 μs -6.3%
pubkey-1 174.9 μs 167.9 μs -4.0%
stablecoin_1-1 889.8 μs 853.3 μs -4.1%
stablecoin_1-2 174.7 μs 166.7 μs -4.6%
stablecoin_1-3 919.1 μs 860.1 μs -6.4%
stablecoin_1-4 175.3 μs 166.8 μs -4.8%
stablecoin_1-5 892.2 μs 952.8 μs +6.8%
stablecoin_1-6 174.9 μs 186.1 μs +6.4%
stablecoin_2-1 891.6 μs 917.1 μs +2.9%
stablecoin_2-2 174.8 μs 167.7 μs -4.1%
stablecoin_2-3 949.4 μs 861.7 μs -9.2%
stablecoin_2-4 174.8 μs 167.9 μs -3.9%
token-account-1 243.6 μs 234.4 μs -3.8%
token-account-2 227.9 μs 212.5 μs -6.8%
uniswap-1 249.1 μs 238.1 μs -4.4%
uniswap-2 244.8 μs 257.5 μs +5.2%
uniswap-3 755.2 μs 729.8 μs -3.4%
uniswap-4 190.5 μs 179.1 μs -6.0%
uniswap-5 756.9 μs 727.3 μs -3.9%
uniswap-6 190.5 μs 178.4 μs -6.4%
vesting-1 334.6 μs 327.5 μs -2.1%
778504b 7069dba Change
TOTAL 35.24 ms 34.47 ms -2.2%

@github-actions

Copy link
Copy Markdown
Contributor

Click here to check the status of your benchmark.

@github-actions

Copy link
Copy Markdown
Contributor

Comparing benchmark results of 'validation-decode' on '778504b86f' (base) and '7069dba7a4' (PR)

Results table
Script 778504b 7069dba Change
auction_1-1 205.5 μs 196.5 μs -4.4%
auction_1-2 559.0 μs 582.3 μs +4.2%
auction_1-3 558.2 μs 581.3 μs +4.1%
auction_1-4 205.3 μs 200.8 μs -2.2%
auction_2-1 204.6 μs 204.0 μs -0.3%
auction_2-2 558.7 μs 582.0 μs +4.2%
auction_2-3 556.3 μs 594.7 μs +6.9%
auction_2-4 556.3 μs 581.1 μs +4.5%
auction_2-5 205.9 μs 197.5 μs -4.1%
coop-1 119.6 μs 122.2 μs +2.2%
coop-2 262.1 μs 254.1 μs -3.1%
coop-3 261.2 μs 256.3 μs -1.9%
coop-4 311.6 μs 299.1 μs -4.0%
coop-5 311.8 μs 298.9 μs -4.1%
coop-6 138.2 μs 130.8 μs -5.4%
coop-7 138.5 μs 131.0 μs -5.4%
crowdfunding-success-1 245.2 μs 236.9 μs -3.4%
crowdfunding-success-2 243.9 μs 237.5 μs -2.6%
crowdfunding-success-3 245.1 μs 237.4 μs -3.1%
currency-1 243.9 μs 235.2 μs -3.6%
escrow-redeem_1-1 325.4 μs 314.6 μs -3.3%
escrow-redeem_1-2 325.9 μs 314.8 μs -3.4%
escrow-redeem_2-1 325.8 μs 314.9 μs -3.3%
escrow-redeem_2-2 327.6 μs 314.9 μs -3.9%
escrow-redeem_2-3 326.5 μs 314.1 μs -3.8%
escrow-refund-1 343.9 μs 331.3 μs -3.7%
future-increase-margin-1 241.4 μs 236.1 μs -2.2%
future-increase-margin-2 331.0 μs 352.2 μs +6.4%
future-increase-margin-3 363.8 μs 317.7 μs -12.7%
future-increase-margin-4 707.7 μs 762.6 μs +7.8%
future-increase-margin-5 769.8 μs 766.7 μs -0.4%
future-pay-out-1 241.3 μs 237.8 μs -1.5%
future-pay-out-2 330.2 μs 318.1 μs -3.7%
future-pay-out-3 329.5 μs 330.2 μs +0.2%
future-pay-out-4 701.9 μs 738.3 μs +5.2%
future-settle-early-1 240.9 μs 236.6 μs -1.8%
future-settle-early-2 332.9 μs 355.3 μs +6.7%
future-settle-early-3 328.6 μs 349.2 μs +6.3%
future-settle-early-4 699.4 μs 758.1 μs +8.4%
game-sm-success_1-1 540.1 μs 527.6 μs -2.3%
game-sm-success_1-2 173.4 μs 168.8 μs -2.7%
game-sm-success_1-3 536.5 μs 526.2 μs -1.9%
game-sm-success_1-4 172.9 μs 168.2 μs -2.7%
game-sm-success_2-1 542.9 μs 529.9 μs -2.4%
game-sm-success_2-2 173.6 μs 178.4 μs +2.8%
game-sm-success_2-3 541.9 μs 526.9 μs -2.8%
game-sm-success_2-4 173.3 μs 186.2 μs +7.4%
game-sm-success_2-5 542.7 μs 528.8 μs -2.6%
game-sm-success_2-6 173.3 μs 172.7 μs -0.3%
guardrail-sorted-large 126.7 μs 134.6 μs +6.2%
guardrail-sorted-small 127.6 μs 128.1 μs +0.4%
guardrail-unsorted-large 125.9 μs 126.6 μs +0.6%
guardrail-unsorted-small 125.7 μs 128.0 μs +1.8%
multisig-sm-01 604.5 μs 586.9 μs -2.9%
multisig-sm-02 608.3 μs 585.0 μs -3.8%
multisig-sm-03 605.3 μs 579.9 μs -4.2%
multisig-sm-04 605.4 μs 583.8 μs -3.6%
multisig-sm-05 603.5 μs 582.3 μs -3.5%
multisig-sm-06 603.5 μs 580.6 μs -3.8%
multisig-sm-07 603.4 μs 581.6 μs -3.6%
multisig-sm-08 601.8 μs 578.3 μs -3.9%
multisig-sm-09 603.8 μs 580.9 μs -3.8%
multisig-sm-10 602.9 μs 584.2 μs -3.1%
ping-pong-1 502.2 μs 493.2 μs -1.8%
ping-pong-2 502.4 μs 493.1 μs -1.9%
ping-pong_2-1 502.8 μs 492.0 μs -2.1%
prism-1 169.6 μs 173.9 μs +2.5%
prism-2 528.1 μs 515.7 μs -2.3%
prism-3 247.1 μs 234.3 μs -5.2%
pubkey-1 173.5 μs 166.9 μs -3.8%
stablecoin_1-1 888.8 μs 864.4 μs -2.7%
stablecoin_1-2 173.3 μs 186.7 μs +7.7%
stablecoin_1-3 926.5 μs 882.7 μs -4.7%
stablecoin_1-4 173.7 μs 180.6 μs +4.0%
stablecoin_1-5 903.6 μs 875.7 μs -3.1%
stablecoin_1-6 173.0 μs 167.7 μs -3.1%
stablecoin_2-1 892.6 μs 935.8 μs +4.8%
stablecoin_2-2 173.2 μs 168.3 μs -2.8%
stablecoin_2-3 885.7 μs 910.2 μs +2.8%
stablecoin_2-4 173.2 μs 184.1 μs +6.3%
token-account-1 247.2 μs 237.1 μs -4.1%
token-account-2 226.0 μs 233.4 μs +3.3%
uniswap-1 247.6 μs 244.6 μs -1.2%
uniswap-2 242.1 μs 258.9 μs +6.9%
uniswap-3 754.7 μs 762.3 μs +1.0%
uniswap-4 188.6 μs 199.1 μs +5.6%
uniswap-5 754.4 μs 731.1 μs -3.1%
uniswap-6 189.1 μs 193.9 μs +2.5%
vesting-1 335.4 μs 327.7 μs -2.3%
778504b 7069dba Change
TOTAL 35.02 ms 34.79 ms -0.6%

@github-actions

Copy link
Copy Markdown
Contributor

Click here to check the status of your benchmark.

@github-actions

Copy link
Copy Markdown
Contributor

Comparing benchmark results of 'validation-decode' on '778504b86f' (base) and '7069dba7a4' (PR)

Results table
Script 778504b 7069dba Change
auction_1-1 204.9 μs 206.8 μs +0.9%
auction_1-2 557.5 μs 578.9 μs +3.8%
auction_1-3 560.5 μs 582.4 μs +3.9%
auction_1-4 204.6 μs 214.8 μs +5.0%
auction_2-1 205.3 μs 198.1 μs -3.5%
auction_2-2 555.4 μs 582.0 μs +4.8%
auction_2-3 559.0 μs 579.4 μs +3.6%
auction_2-4 557.8 μs 579.7 μs +3.9%
auction_2-5 204.2 μs 195.7 μs -4.2%
coop-1 119.4 μs 122.4 μs +2.5%
coop-2 263.0 μs 253.4 μs -3.7%
coop-3 263.1 μs 253.6 μs -3.6%
coop-4 312.1 μs 299.3 μs -4.1%
coop-5 310.1 μs 299.2 μs -3.5%
coop-6 138.6 μs 130.7 μs -5.7%
coop-7 138.6 μs 130.7 μs -5.7%
crowdfunding-success-1 244.5 μs 237.0 μs -3.1%
crowdfunding-success-2 243.9 μs 270.5 μs +10.9%
crowdfunding-success-3 244.3 μs 237.8 μs -2.7%
currency-1 242.4 μs 234.6 μs -3.2%
escrow-redeem_1-1 326.9 μs 316.2 μs -3.3%
escrow-redeem_1-2 326.1 μs 314.7 μs -3.5%
escrow-redeem_2-1 326.4 μs 315.9 μs -3.2%
escrow-redeem_2-2 325.9 μs 315.2 μs -3.3%
escrow-redeem_2-3 326.7 μs 315.3 μs -3.5%
escrow-refund-1 325.5 μs 316.9 μs -2.6%
future-increase-margin-1 243.1 μs 236.9 μs -2.6%
future-increase-margin-2 329.4 μs 352.0 μs +6.9%
future-increase-margin-3 329.3 μs 354.6 μs +7.7%
future-increase-margin-4 757.2 μs 764.0 μs +0.9%
future-increase-margin-5 727.8 μs 768.5 μs +5.6%
future-pay-out-1 240.8 μs 236.4 μs -1.8%
future-pay-out-2 337.2 μs 321.1 μs -4.8%
future-pay-out-3 363.3 μs 343.5 μs -5.5%
future-pay-out-4 711.8 μs 764.6 μs +7.4%
future-settle-early-1 243.3 μs 237.9 μs -2.2%
future-settle-early-2 328.7 μs 357.0 μs +8.6%
future-settle-early-3 353.3 μs 357.3 μs +1.1%
future-settle-early-4 706.1 μs 685.4 μs -2.9%
game-sm-success_1-1 541.1 μs 527.7 μs -2.5%
game-sm-success_1-2 173.5 μs 179.1 μs +3.2%
game-sm-success_1-3 535.0 μs 524.6 μs -1.9%
game-sm-success_1-4 173.3 μs 187.4 μs +8.1%
game-sm-success_2-1 539.5 μs 533.2 μs -1.2%
game-sm-success_2-2 173.2 μs 186.7 μs +7.8%
game-sm-success_2-3 541.8 μs 528.2 μs -2.5%
game-sm-success_2-4 173.0 μs 178.7 μs +3.3%
game-sm-success_2-5 535.0 μs 527.2 μs -1.5%
game-sm-success_2-6 173.3 μs 167.7 μs -3.2%
guardrail-sorted-large 127.7 μs 129.6 μs +1.5%
guardrail-sorted-small 128.1 μs 132.0 μs +3.0%
guardrail-unsorted-large 127.1 μs 128.2 μs +0.9%
guardrail-unsorted-small 126.7 μs 127.5 μs +0.6%
multisig-sm-01 600.7 μs 583.4 μs -2.9%
multisig-sm-02 604.5 μs 578.8 μs -4.3%
multisig-sm-03 603.0 μs 580.8 μs -3.7%
multisig-sm-04 602.6 μs 579.9 μs -3.8%
multisig-sm-05 604.2 μs 586.6 μs -2.9%
multisig-sm-06 603.4 μs 585.6 μs -2.9%
multisig-sm-07 601.2 μs 578.5 μs -3.8%
multisig-sm-08 601.9 μs 583.8 μs -3.0%
multisig-sm-09 603.8 μs 581.0 μs -3.8%
multisig-sm-10 601.3 μs 578.8 μs -3.7%
ping-pong-1 501.4 μs 493.5 μs -1.6%
ping-pong-2 501.1 μs 492.3 μs -1.8%
ping-pong_2-1 501.4 μs 504.5 μs +0.6%
prism-1 169.3 μs 181.5 μs +7.2%
prism-2 580.5 μs 516.4 μs -11.0%
prism-3 247.1 μs 260.5 μs +5.4%
pubkey-1 173.1 μs 168.5 μs -2.7%
stablecoin_1-1 910.1 μs 925.8 μs +1.7%
stablecoin_1-2 173.1 μs 186.6 μs +7.8%
stablecoin_1-3 883.5 μs 891.1 μs +0.9%
stablecoin_1-4 173.0 μs 182.4 μs +5.4%
stablecoin_1-5 895.4 μs 868.2 μs -3.0%
stablecoin_1-6 173.4 μs 167.4 μs -3.5%
stablecoin_2-1 894.5 μs 925.5 μs +3.5%
stablecoin_2-2 173.3 μs 182.8 μs +5.5%
stablecoin_2-3 891.6 μs 889.3 μs -0.3%
stablecoin_2-4 172.9 μs 187.8 μs +8.6%
token-account-1 249.1 μs 235.0 μs -5.7%
token-account-2 226.1 μs 214.1 μs -5.3%
uniswap-1 246.6 μs 238.8 μs -3.2%
uniswap-2 241.7 μs 262.3 μs +8.5%
uniswap-3 753.8 μs 733.4 μs -2.7%
uniswap-4 190.9 μs 179.2 μs -6.1%
uniswap-5 753.1 μs 777.1 μs +3.2%
uniswap-6 188.4 μs 194.3 μs +3.1%
vesting-1 335.1 μs 327.2 μs -2.4%
778504b 7069dba Change
TOTAL 35.05 ms 34.92 ms -0.4%

@kwxm kwxm left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks promising, but I think it could be made more efficient. Also the decoding benchmark results are a bit strange: on average this seems to speed things up a bit, but if you you at the results for individual scripts it looks as if it gets quicker to decode some scripts and slower to decode others. Maybe that's just random though: the speedups/slowdowns don't seem to be consistent over different benchmark runs. It could just be Criterion being weird.

Relatedly, I have an issue to look again at the whole builtinsAvailableIn thing. It may be possbile to compute a lot more of this stuff at compile time, but I'm not totally confident about that. I did some experiments in #7232 , #7233, and #7241 but then had to go and do other stuff. I'll take another look some time.

let availableBuiltins = builtinsAvailableIn ll pv
let available = builtinsAvailableIn ll pv

availableArr :: UArray DefaultFun Bool

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that this is the only place (except maybe in tests) that builtinsAvailableIn is used, so you could try making that and builtinsIntroducedIn return a UArray instead of a set. That might be more efficient than introducing the set only to get rid of it again later. For consistency you'd probably need to do something similar for some of the other functions in that function.

@zeme-wana

Copy link
Copy Markdown
Collaborator Author

/benchmark validation-decode

@zeme-wana

Copy link
Copy Markdown
Collaborator Author

/benchmark validation-full

@zeme-wana

Copy link
Copy Markdown
Collaborator Author

/benchmark validation-decode

@github-actions

Copy link
Copy Markdown
Contributor

Click here to check the status of your benchmark.

@zeme-wana

Copy link
Copy Markdown
Collaborator Author

/benchmark validation-full

@github-actions

Copy link
Copy Markdown
Contributor

Comparing benchmark results of 'validation-decode' on '778504b86f' (base) and 'fce40f3855' (PR)

Results table
Script 778504b fce40f3 Change
auction_1-1 205.3 μs 203.6 μs -0.8%
auction_1-2 559.9 μs 551.0 μs -1.6%
auction_1-3 559.2 μs 550.5 μs -1.6%
auction_1-4 204.7 μs 202.4 μs -1.1%
auction_2-1 205.1 μs 204.8 μs -0.1%
auction_2-2 608.0 μs 551.2 μs -9.3%
auction_2-3 557.1 μs 548.1 μs -1.6%
auction_2-4 555.7 μs 547.7 μs -1.4%
auction_2-5 204.4 μs 201.2 μs -1.6%
coop-1 119.6 μs 115.8 μs -3.2%
coop-2 262.1 μs 262.8 μs +0.3%
coop-3 260.9 μs 260.0 μs -0.3%
coop-4 309.7 μs 304.9 μs -1.5%
coop-5 310.6 μs 308.6 μs -0.6%
coop-6 138.3 μs 134.1 μs -3.0%
coop-7 137.9 μs 132.8 μs -3.7%
crowdfunding-success-1 244.2 μs 242.4 μs -0.7%
crowdfunding-success-2 244.4 μs 242.5 μs -0.8%
crowdfunding-success-3 243.7 μs 242.5 μs -0.5%
currency-1 242.3 μs 240.6 μs -0.7%
escrow-redeem_1-1 327.0 μs 325.7 μs -0.4%
escrow-redeem_1-2 326.9 μs 324.2 μs -0.8%
escrow-redeem_2-1 334.8 μs 324.3 μs -3.1%
escrow-redeem_2-2 327.0 μs 323.9 μs -0.9%
escrow-redeem_2-3 326.5 μs 324.0 μs -0.8%
escrow-refund-1 326.2 μs 324.8 μs -0.4%
future-increase-margin-1 242.3 μs 240.6 μs -0.7%
future-increase-margin-2 330.1 μs 328.6 μs -0.5%
future-increase-margin-3 328.6 μs 329.1 μs +0.2%
future-increase-margin-4 714.3 μs 697.8 μs -2.3%
future-increase-margin-5 711.4 μs 697.2 μs -2.0%
future-pay-out-1 244.5 μs 240.1 μs -1.8%
future-pay-out-2 367.5 μs 327.4 μs -10.9%
future-pay-out-3 330.0 μs 327.9 μs -0.6%
future-pay-out-4 706.7 μs 693.0 μs -1.9%
future-settle-early-1 241.3 μs 240.0 μs -0.5%
future-settle-early-2 329.8 μs 329.1 μs -0.2%
future-settle-early-3 329.5 μs 328.4 μs -0.3%
future-settle-early-4 696.6 μs 697.7 μs +0.2%
game-sm-success_1-1 541.7 μs 608.0 μs +12.2%
game-sm-success_1-2 173.1 μs 170.6 μs -1.4%
game-sm-success_1-3 539.2 μs 537.7 μs -0.3%
game-sm-success_1-4 173.8 μs 169.6 μs -2.4%
game-sm-success_2-1 535.9 μs 535.6 μs -0.1%
game-sm-success_2-2 173.5 μs 194.8 μs +12.3%
game-sm-success_2-3 542.4 μs 539.4 μs -0.6%
game-sm-success_2-4 173.8 μs 170.7 μs -1.8%
game-sm-success_2-5 538.0 μs 612.8 μs +13.9%
game-sm-success_2-6 173.2 μs 174.9 μs +1.0%
guardrail-sorted-large 126.8 μs 130.4 μs +2.8%
guardrail-sorted-small 126.8 μs 130.6 μs +3.0%
guardrail-unsorted-large 126.3 μs 130.2 μs +3.1%
guardrail-unsorted-small 126.4 μs 130.0 μs +2.8%
multisig-sm-01 604.2 μs 593.3 μs -1.8%
multisig-sm-02 603.2 μs 596.3 μs -1.1%
multisig-sm-03 604.4 μs 592.4 μs -2.0%
multisig-sm-04 606.1 μs 591.5 μs -2.4%
multisig-sm-05 606.3 μs 592.8 μs -2.2%
multisig-sm-06 604.2 μs 594.0 μs -1.7%
multisig-sm-07 604.6 μs 593.7 μs -1.8%
multisig-sm-08 605.4 μs 593.4 μs -2.0%
multisig-sm-09 605.2 μs 593.0 μs -2.0%
multisig-sm-10 610.1 μs 593.5 μs -2.7%
ping-pong-1 505.2 μs 497.9 μs -1.4%
ping-pong-2 503.8 μs 496.7 μs -1.4%
ping-pong_2-1 503.5 μs 497.2 μs -1.3%
prism-1 169.6 μs 164.2 μs -3.2%
prism-2 528.9 μs 524.7 μs -0.8%
prism-3 247.5 μs 242.0 μs -2.2%
pubkey-1 173.6 μs 168.3 μs -3.1%
stablecoin_1-1 927.9 μs 885.5 μs -4.6%
stablecoin_1-2 173.6 μs 170.2 μs -2.0%
stablecoin_1-3 901.8 μs 883.3 μs -2.1%
stablecoin_1-4 174.0 μs 169.9 μs -2.4%
stablecoin_1-5 897.7 μs 938.7 μs +4.6%
stablecoin_1-6 173.8 μs 169.3 μs -2.6%
stablecoin_2-1 948.9 μs 970.9 μs +2.3%
stablecoin_2-2 173.7 μs 188.9 μs +8.8%
stablecoin_2-3 895.9 μs 970.6 μs +8.3%
stablecoin_2-4 173.5 μs 175.2 μs +1.0%
token-account-1 276.6 μs 239.3 μs -13.5%
token-account-2 227.4 μs 219.5 μs -3.5%
uniswap-1 247.3 μs 242.7 μs -1.9%
uniswap-2 242.6 μs 240.8 μs -0.7%
uniswap-3 754.4 μs 742.5 μs -1.6%
uniswap-4 188.7 μs 183.6 μs -2.7%
uniswap-5 752.5 μs 745.6 μs -0.9%
uniswap-6 188.9 μs 184.5 μs -2.3%
vesting-1 333.2 μs 330.3 μs -0.9%
778504b fce40f3 Change
TOTAL 35.12 ms 34.88 ms -0.7%

@github-actions

Copy link
Copy Markdown
Contributor

Click here to check the status of your benchmark.

@zeme-wana

Copy link
Copy Markdown
Collaborator Author

/benchmark validation-decode

@github-actions

Copy link
Copy Markdown
Contributor

Comparing benchmark results of 'validation-full' on '778504b86f' (base) and 'fce40f3855' (PR)

Results table
Script 778504b fce40f3 Change
auction_1-1 442.9 μs 435.8 μs -1.6%
auction_1-2 1.434 ms 1.412 ms -1.5%
auction_1-3 1.435 ms 1.411 ms -1.7%
auction_1-4 497.7 μs 489.2 μs -1.7%
auction_2-1 442.5 μs 432.8 μs -2.2%
auction_2-2 1.429 ms 1.408 ms -1.5%
auction_2-3 1.649 ms 1.625 ms -1.5%
auction_2-4 1.426 ms 1.407 ms -1.3%
auction_2-5 496.4 μs 488.4 μs -1.6%
coop-1 381.3 μs 378.4 μs -0.8%
coop-2 1.133 ms 1.132 ms -0.1%
coop-3 2.568 ms 2.578 ms +0.4%
coop-4 1.417 ms 1.411 ms -0.4%
coop-5 813.8 μs 801.3 μs -1.5%
coop-6 875.0 μs 875.6 μs +0.1%
coop-7 506.1 μs 502.7 μs -0.7%
crowdfunding-success-1 536.0 μs 524.6 μs -2.1%
crowdfunding-success-2 536.3 μs 523.7 μs -2.3%
crowdfunding-success-3 536.4 μs 523.9 μs -2.3%
currency-1 566.3 μs 552.7 μs -2.4%
escrow-redeem_1-1 791.1 μs 774.2 μs -2.1%
escrow-redeem_1-2 791.7 μs 774.1 μs -2.2%
escrow-redeem_2-1 848.1 μs 833.9 μs -1.7%
escrow-redeem_2-2 848.3 μs 833.9 μs -1.7%
escrow-redeem_2-3 847.4 μs 833.8 μs -1.6%
escrow-refund-1 591.7 μs 573.6 μs -3.1%
future-increase-margin-1 565.4 μs 552.8 μs -2.2%
future-increase-margin-2 980.9 μs 966.1 μs -1.5%
future-increase-margin-3 981.3 μs 966.0 μs -1.6%
future-increase-margin-4 1.511 ms 1.441 ms -4.6%
future-increase-margin-5 1.889 ms 1.812 ms -4.1%
future-pay-out-1 565.4 μs 552.7 μs -2.2%
future-pay-out-2 982.4 μs 966.5 μs -1.6%
future-pay-out-3 1.005 ms 965.9 μs -3.9%
future-pay-out-4 1.840 ms 1.811 ms -1.6%
future-settle-early-1 565.1 μs 552.2 μs -2.3%
future-settle-early-2 981.5 μs 966.0 μs -1.6%
future-settle-early-3 980.9 μs 964.6 μs -1.7%
future-settle-early-4 1.614 ms 1.579 ms -2.2%
game-sm-success_1-1 1.199 ms 1.104 ms -7.9%
game-sm-success_1-2 426.5 μs 417.4 μs -2.1%
game-sm-success_1-3 1.474 ms 1.386 ms -6.0%
game-sm-success_1-4 461.1 μs 451.8 μs -2.0%
game-sm-success_2-1 1.175 ms 1.104 ms -6.0%
game-sm-success_2-2 426.4 μs 417.3 μs -2.1%
game-sm-success_2-3 1.470 ms 1.387 ms -5.6%
game-sm-success_2-4 461.3 μs 452.2 μs -2.0%
game-sm-success_2-5 1.460 ms 1.388 ms -4.9%
game-sm-success_2-6 461.0 μs 452.5 μs -1.8%
guardrail-sorted-large 598.4 μs 587.1 μs -1.9%
guardrail-sorted-small 217.4 μs 216.3 μs -0.5%
guardrail-unsorted-large 749.2 μs 747.7 μs -0.2%
guardrail-unsorted-small 213.4 μs 206.9 μs -3.0%
multisig-sm-01 1.222 ms 1.202 ms -1.6%
multisig-sm-02 1.214 ms 1.191 ms -1.9%
multisig-sm-03 1.219 ms 1.194 ms -2.1%
multisig-sm-04 1.226 ms 1.199 ms -2.2%
multisig-sm-05 1.400 ms 1.378 ms -1.6%
multisig-sm-06 1.236 ms 1.200 ms -2.9%
multisig-sm-07 1.214 ms 1.189 ms -2.1%
multisig-sm-08 1.215 ms 1.193 ms -1.8%
multisig-sm-09 1.225 ms 1.199 ms -2.1%
multisig-sm-10 1.415 ms 1.380 ms -2.5%
ping-pong-1 1.097 ms 820.8 μs -25.2%
ping-pong-2 1.095 ms 821.5 μs -25.0%
ping-pong_2-1 871.0 μs 852.5 μs -2.1%
prism-1 385.3 μs 375.5 μs -2.5%
prism-2 1.149 ms 1.127 ms -1.9%
prism-3 695.3 μs 680.1 μs -2.2%
pubkey-1 367.0 μs 353.9 μs -3.6%
stablecoin_1-1 2.380 ms 2.257 ms -5.2%
stablecoin_1-2 421.3 μs 408.8 μs -3.0%
stablecoin_1-3 2.471 ms 2.426 ms -1.8%
stablecoin_1-4 434.2 μs 425.4 μs -2.0%
stablecoin_1-5 2.832 ms 2.790 ms -1.5%
stablecoin_1-6 484.0 μs 470.4 μs -2.8%
stablecoin_2-1 2.317 ms 2.255 ms -2.7%
stablecoin_2-2 422.6 μs 408.1 μs -3.4%
stablecoin_2-3 2.469 ms 2.424 ms -1.8%
stablecoin_2-4 434.0 μs 425.7 μs -1.9%
token-account-1 506.8 μs 492.8 μs -2.8%
token-account-2 625.9 μs 615.8 μs -1.6%
uniswap-1 718.8 μs 709.9 μs -1.2%
uniswap-2 542.3 μs 527.0 μs -2.8%
uniswap-3 2.959 ms 2.927 ms -1.1%
uniswap-4 601.4 μs 571.4 μs -5.0%
uniswap-5 2.262 ms 2.221 ms -1.8%
uniswap-6 564.5 μs 559.0 μs -1.0%
vesting-1 795.2 μs 783.0 μs -1.5%
778504b fce40f3 Change
TOTAL 91.58 ms 89.00 ms -2.8%

@github-actions

Copy link
Copy Markdown
Contributor

Click here to check the status of your benchmark.

@github-actions

Copy link
Copy Markdown
Contributor

Comparing benchmark results of 'validation-decode' on '778504b86f' (base) and 'fce40f3855' (PR)

Results table
Script 778504b fce40f3 Change
auction_1-1 205.0 μs 197.0 μs -3.9%
auction_1-2 559.3 μs 540.4 μs -3.4%
auction_1-3 557.1 μs 540.0 μs -3.1%
auction_1-4 204.6 μs 197.4 μs -3.5%
auction_2-1 204.3 μs 208.4 μs +2.0%
auction_2-2 556.4 μs 542.9 μs -2.4%
auction_2-3 556.1 μs 538.0 μs -3.3%
auction_2-4 555.4 μs 538.0 μs -3.1%
auction_2-5 203.8 μs 200.9 μs -1.4%
coop-1 119.1 μs 112.9 μs -5.2%
coop-2 262.8 μs 269.1 μs +2.4%
coop-3 263.4 μs 261.6 μs -0.7%
coop-4 317.7 μs 305.9 μs -3.7%
coop-5 311.8 μs 304.5 μs -2.3%
coop-6 138.0 μs 132.0 μs -4.3%
coop-7 138.6 μs 131.6 μs -5.1%
crowdfunding-success-1 244.3 μs 239.0 μs -2.2%
crowdfunding-success-2 244.3 μs 238.9 μs -2.2%
crowdfunding-success-3 243.6 μs 239.3 μs -1.8%
currency-1 243.4 μs 237.8 μs -2.3%
escrow-redeem_1-1 326.2 μs 319.6 μs -2.0%
escrow-redeem_1-2 325.8 μs 322.4 μs -1.0%
escrow-redeem_2-1 329.3 μs 319.9 μs -2.9%
escrow-redeem_2-2 325.0 μs 319.4 μs -1.7%
escrow-redeem_2-3 327.6 μs 319.7 μs -2.4%
escrow-refund-1 335.1 μs 320.5 μs -4.4%
future-increase-margin-1 240.5 μs 237.3 μs -1.3%
future-increase-margin-2 328.7 μs 352.4 μs +7.2%
future-increase-margin-3 328.8 μs 323.8 μs -1.5%
future-increase-margin-4 705.7 μs 689.0 μs -2.4%
future-increase-margin-5 699.6 μs 688.0 μs -1.7%
future-pay-out-1 240.9 μs 236.7 μs -1.7%
future-pay-out-2 328.1 μs 323.9 μs -1.3%
future-pay-out-3 328.8 μs 324.1 μs -1.4%
future-pay-out-4 703.1 μs 687.5 μs -2.2%
future-settle-early-1 241.8 μs 236.5 μs -2.2%
future-settle-early-2 339.0 μs 326.5 μs -3.7%
future-settle-early-3 364.8 μs 325.1 μs -10.9%
future-settle-early-4 706.5 μs 685.6 μs -3.0%
game-sm-success_1-1 541.4 μs 602.0 μs +11.2%
game-sm-success_1-2 173.0 μs 166.0 μs -4.0%
game-sm-success_1-3 535.8 μs 591.6 μs +10.4%
game-sm-success_1-4 186.5 μs 168.0 μs -9.9%
game-sm-success_2-1 538.7 μs 602.3 μs +11.8%
game-sm-success_2-2 174.7 μs 191.9 μs +9.8%
game-sm-success_2-3 540.7 μs 598.6 μs +10.7%
game-sm-success_2-4 172.9 μs 166.6 μs -3.6%
game-sm-success_2-5 540.6 μs 592.6 μs +9.6%
game-sm-success_2-6 173.5 μs 192.4 μs +10.9%
guardrail-sorted-large 127.4 μs 130.2 μs +2.2%
guardrail-sorted-small 127.4 μs 129.7 μs +1.8%
guardrail-unsorted-large 125.9 μs 130.5 μs +3.7%
guardrail-unsorted-small 126.4 μs 130.4 μs +3.2%
multisig-sm-01 603.4 μs 586.9 μs -2.7%
multisig-sm-02 602.2 μs 586.7 μs -2.6%
multisig-sm-03 604.6 μs 585.6 μs -3.1%
multisig-sm-04 604.4 μs 588.2 μs -2.7%
multisig-sm-05 603.1 μs 582.0 μs -3.5%
multisig-sm-06 602.6 μs 584.5 μs -3.0%
multisig-sm-07 600.4 μs 584.1 μs -2.7%
multisig-sm-08 603.9 μs 582.0 μs -3.6%
multisig-sm-09 603.2 μs 582.2 μs -3.5%
multisig-sm-10 603.4 μs 582.9 μs -3.4%
ping-pong-1 501.9 μs 489.9 μs -2.4%
ping-pong-2 502.4 μs 550.3 μs +9.5%
ping-pong_2-1 502.7 μs 491.6 μs -2.2%
prism-1 169.3 μs 161.4 μs -4.7%
prism-2 580.6 μs 515.6 μs -11.2%
prism-3 247.2 μs 237.6 μs -3.9%
pubkey-1 172.7 μs 165.4 μs -4.2%
stablecoin_1-1 886.7 μs 873.8 μs -1.5%
stablecoin_1-2 173.6 μs 167.9 μs -3.3%
stablecoin_1-3 897.8 μs 957.4 μs +6.6%
stablecoin_1-4 173.4 μs 167.4 μs -3.5%
stablecoin_1-5 913.2 μs 873.6 μs -4.3%
stablecoin_1-6 172.7 μs 167.9 μs -2.8%
stablecoin_2-1 914.3 μs 870.8 μs -4.8%
stablecoin_2-2 173.1 μs 167.2 μs -3.4%
stablecoin_2-3 887.9 μs 874.0 μs -1.6%
stablecoin_2-4 172.8 μs 167.8 μs -2.9%
token-account-1 242.4 μs 236.2 μs -2.6%
token-account-2 226.2 μs 217.7 μs -3.8%
uniswap-1 245.6 μs 238.6 μs -2.9%
uniswap-2 242.3 μs 236.0 μs -2.6%
uniswap-3 755.0 μs 793.2 μs +5.1%
uniswap-4 187.9 μs 179.9 μs -4.3%
uniswap-5 755.9 μs 791.4 μs +4.7%
uniswap-6 188.4 μs 181.6 μs -3.6%
vesting-1 331.9 μs 325.1 μs -2.0%
778504b fce40f3 Change
TOTAL 34.99 ms 34.67 ms -0.9%

@effectfully

Copy link
Copy Markdown
Contributor

it starting with -10.9% and ending with +10.9% is almost poetic

image

@zeme-wana

Copy link
Copy Markdown
Collaborator Author

/benchmark validation-decode

@github-actions

Copy link
Copy Markdown
Contributor

Click here to check the status of your benchmark.

@github-actions

Copy link
Copy Markdown
Contributor

Comparing benchmark results of 'validation-decode' on '778504b86f' (base) and 'fce40f3855' (PR)

Results table
Script 778504b fce40f3 Change
auction_1-1 204.2 μs 192.9 μs -5.5%
auction_1-2 556.4 μs 531.7 μs -4.4%
auction_1-3 555.1 μs 532.3 μs -4.1%
auction_1-4 204.2 μs 195.5 μs -4.3%
auction_2-1 204.4 μs 196.7 μs -3.8%
auction_2-2 554.3 μs 528.8 μs -4.6%
auction_2-3 555.0 μs 531.7 μs -4.2%
auction_2-4 550.6 μs 530.1 μs -3.7%
auction_2-5 203.8 μs 192.4 μs -5.6%
coop-1 119.8 μs 110.1 μs -8.1%
coop-2 263.3 μs 250.1 μs -5.0%
coop-3 261.0 μs 249.5 μs -4.4%
coop-4 310.5 μs 296.4 μs -4.5%
coop-5 312.6 μs 296.8 μs -5.1%
coop-6 139.5 μs 128.4 μs -8.0%
coop-7 139.5 μs 129.1 μs -7.5%
crowdfunding-success-1 243.3 μs 233.9 μs -3.9%
crowdfunding-success-2 244.0 μs 233.6 μs -4.3%
crowdfunding-success-3 244.5 μs 234.5 μs -4.1%
currency-1 241.2 μs 234.1 μs -2.9%
escrow-redeem_1-1 336.5 μs 312.7 μs -7.1%
escrow-redeem_1-2 325.9 μs 314.2 μs -3.6%
escrow-redeem_2-1 345.9 μs 313.6 μs -9.3%
escrow-redeem_2-2 326.8 μs 312.5 μs -4.4%
escrow-redeem_2-3 325.2 μs 312.6 μs -3.9%
escrow-refund-1 325.9 μs 312.3 μs -4.2%
future-increase-margin-1 240.4 μs 233.0 μs -3.1%
future-increase-margin-2 328.8 μs 316.6 μs -3.7%
future-increase-margin-3 327.8 μs 316.8 μs -3.4%
future-increase-margin-4 703.0 μs 677.3 μs -3.7%
future-increase-margin-5 705.1 μs 676.7 μs -4.0%
future-pay-out-1 241.6 μs 232.6 μs -3.7%
future-pay-out-2 338.2 μs 316.4 μs -6.4%
future-pay-out-3 329.2 μs 317.2 μs -3.6%
future-pay-out-4 734.1 μs 672.1 μs -8.4%
future-settle-early-1 242.5 μs 232.6 μs -4.1%
future-settle-early-2 328.5 μs 317.3 μs -3.4%
future-settle-early-3 328.5 μs 316.6 μs -3.6%
future-settle-early-4 784.3 μs 676.9 μs -13.7%
game-sm-success_1-1 540.3 μs 581.3 μs +7.6%
game-sm-success_1-2 173.2 μs 182.0 μs +5.1%
game-sm-success_1-3 540.5 μs 587.1 μs +8.6%
game-sm-success_1-4 173.7 μs 163.5 μs -5.9%
game-sm-success_2-1 540.1 μs 574.7 μs +6.4%
game-sm-success_2-2 173.1 μs 178.5 μs +3.1%
game-sm-success_2-3 539.5 μs 550.8 μs +2.1%
game-sm-success_2-4 173.2 μs 163.1 μs -5.8%
game-sm-success_2-5 537.8 μs 532.6 μs -1.0%
game-sm-success_2-6 172.8 μs 163.7 μs -5.3%
guardrail-sorted-large 126.7 μs 126.0 μs -0.6%
guardrail-sorted-small 127.0 μs 126.3 μs -0.6%
guardrail-unsorted-large 126.1 μs 125.7 μs -0.3%
guardrail-unsorted-small 126.1 μs 125.4 μs -0.6%
multisig-sm-01 603.7 μs 575.9 μs -4.6%
multisig-sm-02 600.1 μs 582.9 μs -2.9%
multisig-sm-03 603.9 μs 573.8 μs -5.0%
multisig-sm-04 602.4 μs 573.1 μs -4.9%
multisig-sm-05 602.8 μs 572.0 μs -5.1%
multisig-sm-06 605.2 μs 572.4 μs -5.4%
multisig-sm-07 603.7 μs 572.5 μs -5.2%
multisig-sm-08 602.0 μs 571.9 μs -5.0%
multisig-sm-09 600.8 μs 571.6 μs -4.9%
multisig-sm-10 597.5 μs 572.2 μs -4.2%
ping-pong-1 502.0 μs 480.0 μs -4.4%
ping-pong-2 502.3 μs 481.8 μs -4.1%
ping-pong_2-1 502.1 μs 481.1 μs -4.2%
prism-1 168.5 μs 158.3 μs -6.1%
prism-2 555.6 μs 506.8 μs -8.8%
prism-3 247.2 μs 233.6 μs -5.5%
pubkey-1 172.9 μs 162.3 μs -6.1%
stablecoin_1-1 887.3 μs 856.9 μs -3.4%
stablecoin_1-2 173.9 μs 163.7 μs -5.9%
stablecoin_1-3 886.5 μs 858.7 μs -3.1%
stablecoin_1-4 173.3 μs 164.5 μs -5.1%
stablecoin_1-5 898.4 μs 859.2 μs -4.4%
stablecoin_1-6 173.3 μs 163.7 μs -5.5%
stablecoin_2-1 896.8 μs 944.5 μs +5.3%
stablecoin_2-2 173.1 μs 165.1 μs -4.6%
stablecoin_2-3 884.8 μs 858.2 μs -3.0%
stablecoin_2-4 172.8 μs 165.7 μs -4.1%
token-account-1 242.8 μs 230.6 μs -5.0%
token-account-2 226.3 μs 217.8 μs -3.8%
uniswap-1 246.6 μs 238.9 μs -3.1%
uniswap-2 241.5 μs 228.8 μs -5.3%
uniswap-3 755.1 μs 718.6 μs -4.8%
uniswap-4 188.7 μs 175.9 μs -6.8%
uniswap-5 756.1 μs 728.3 μs -3.7%
uniswap-6 188.3 μs 176.4 μs -6.3%
vesting-1 333.6 μs 315.2 μs -5.5%
778504b fce40f3 Change
TOTAL 34.97 ms 33.66 ms -3.7%

@zeme-wana

Copy link
Copy Markdown
Collaborator Author

/benchmark validation-decode

@github-actions

Copy link
Copy Markdown
Contributor

Click here to check the status of your benchmark.

@github-actions

Copy link
Copy Markdown
Contributor

Comparing benchmark results of 'validation-decode' on '778504b86f' (base) and 'fce40f3855' (PR)

Results table
Script 778504b fce40f3 Change
auction_1-1 204.6 μs 196.8 μs -3.8%
auction_1-2 557.8 μs 540.3 μs -3.1%
auction_1-3 556.4 μs 539.9 μs -3.0%
auction_1-4 205.0 μs 217.8 μs +6.2%
auction_2-1 204.0 μs 202.0 μs -1.0%
auction_2-2 556.3 μs 543.8 μs -2.2%
auction_2-3 555.3 μs 538.4 μs -3.0%
auction_2-4 555.5 μs 539.6 μs -2.9%
auction_2-5 203.8 μs 197.3 μs -3.2%
coop-1 119.2 μs 114.2 μs -4.2%
coop-2 263.8 μs 264.4 μs +0.2%
coop-3 261.6 μs 266.0 μs +1.7%
coop-4 308.7 μs 303.2 μs -1.8%
coop-5 309.7 μs 305.8 μs -1.3%
coop-6 138.1 μs 132.1 μs -4.3%
coop-7 138.2 μs 132.6 μs -4.1%
crowdfunding-success-1 244.5 μs 239.4 μs -2.1%
crowdfunding-success-2 243.8 μs 240.4 μs -1.4%
crowdfunding-success-3 243.5 μs 237.9 μs -2.3%
currency-1 241.2 μs 239.4 μs -0.7%
escrow-redeem_1-1 346.2 μs 318.3 μs -8.1%
escrow-redeem_1-2 336.2 μs 319.5 μs -5.0%
escrow-redeem_2-1 324.9 μs 318.1 μs -2.1%
escrow-redeem_2-2 346.3 μs 319.8 μs -7.7%
escrow-redeem_2-3 324.6 μs 317.6 μs -2.2%
escrow-refund-1 327.9 μs 319.5 μs -2.6%
future-increase-margin-1 242.9 μs 236.1 μs -2.8%
future-increase-margin-2 356.4 μs 327.2 μs -8.2%
future-increase-margin-3 331.5 μs 322.5 μs -2.7%
future-increase-margin-4 701.9 μs 686.5 μs -2.2%
future-increase-margin-5 702.9 μs 685.1 μs -2.5%
future-pay-out-1 242.8 μs 237.6 μs -2.1%
future-pay-out-2 330.2 μs 325.1 μs -1.5%
future-pay-out-3 330.8 μs 324.9 μs -1.8%
future-pay-out-4 702.9 μs 686.1 μs -2.4%
future-settle-early-1 240.4 μs 234.8 μs -2.3%
future-settle-early-2 327.1 μs 322.4 μs -1.4%
future-settle-early-3 327.3 μs 322.9 μs -1.3%
future-settle-early-4 707.2 μs 685.8 μs -3.0%
game-sm-success_1-1 539.9 μs 593.8 μs +10.0%
game-sm-success_1-2 172.9 μs 166.6 μs -3.6%
game-sm-success_1-3 539.5 μs 596.3 μs +10.5%
game-sm-success_1-4 173.0 μs 167.3 μs -3.3%
game-sm-success_2-1 539.5 μs 551.2 μs +2.2%
game-sm-success_2-2 172.5 μs 166.1 μs -3.7%
game-sm-success_2-3 540.6 μs 595.4 μs +10.1%
game-sm-success_2-4 172.7 μs 166.5 μs -3.6%
game-sm-success_2-5 537.8 μs 594.1 μs +10.5%
game-sm-success_2-6 172.8 μs 168.6 μs -2.4%
guardrail-sorted-large 126.7 μs 129.9 μs +2.5%
guardrail-sorted-small 127.0 μs 130.3 μs +2.6%
guardrail-unsorted-large 126.6 μs 129.0 μs +1.9%
guardrail-unsorted-small 125.8 μs 129.9 μs +3.3%
multisig-sm-01 602.3 μs 663.7 μs +10.2%
multisig-sm-02 602.5 μs 662.0 μs +9.9%
multisig-sm-03 601.0 μs 595.6 μs -0.9%
multisig-sm-04 604.3 μs 583.1 μs -3.5%
multisig-sm-05 601.4 μs 582.9 μs -3.1%
multisig-sm-06 599.9 μs 584.1 μs -2.6%
multisig-sm-07 603.0 μs 582.3 μs -3.4%
multisig-sm-08 604.2 μs 658.8 μs +9.0%
multisig-sm-09 599.8 μs 580.6 μs -3.2%
multisig-sm-10 602.2 μs 581.8 μs -3.4%
ping-pong-1 501.3 μs 488.8 μs -2.5%
ping-pong-2 501.0 μs 488.0 μs -2.6%
ping-pong_2-1 501.1 μs 488.6 μs -2.5%
prism-1 169.0 μs 160.5 μs -5.0%
prism-2 573.8 μs 515.4 μs -10.2%
prism-3 246.9 μs 237.3 μs -3.9%
pubkey-1 172.9 μs 166.4 μs -3.8%
stablecoin_1-1 974.7 μs 872.4 μs -10.5%
stablecoin_1-2 173.2 μs 166.5 μs -3.9%
stablecoin_1-3 893.6 μs 870.7 μs -2.6%
stablecoin_1-4 172.7 μs 167.2 μs -3.2%
stablecoin_1-5 908.9 μs 879.9 μs -3.2%
stablecoin_1-6 172.9 μs 166.6 μs -3.6%
stablecoin_2-1 891.2 μs 870.8 μs -2.3%
stablecoin_2-2 172.7 μs 166.8 μs -3.4%
stablecoin_2-3 893.6 μs 873.1 μs -2.3%
stablecoin_2-4 173.0 μs 166.8 μs -3.6%
token-account-1 242.7 μs 235.4 μs -3.0%
token-account-2 226.3 μs 215.5 μs -4.8%
uniswap-1 246.3 μs 237.6 μs -3.5%
uniswap-2 242.0 μs 234.5 μs -3.1%
uniswap-3 756.4 μs 731.2 μs -3.3%
uniswap-4 188.2 μs 179.8 μs -4.5%
uniswap-5 751.6 μs 728.5 μs -3.1%
uniswap-6 190.6 μs 181.1 μs -5.0%
vesting-1 334.7 μs 322.7 μs -3.6%
778504b fce40f3 Change
TOTAL 35.02 ms 34.47 ms -1.6%

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

No Changelog Required Add this to skip the Changelog Check

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants