Skip to content

Commit bb965f9

Browse files
committed
bench: plutus-scripts-bench: decouple mkPlutusBenchScript from PlutusTx accepting serialised UPLC
1 parent bbab426 commit bb965f9

12 files changed

Lines changed: 105 additions & 170 deletions

File tree

bench/plutus-scripts-bench/src/Cardano/Benchmarking/PlutusScripts/CustomCall.hs

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,26 +9,24 @@
99

1010
module Cardano.Benchmarking.PlutusScripts.CustomCall (script) where
1111

12-
import Cardano.Api (PlutusScript (..), PlutusScriptV2, PlutusScriptVersion (..),
13-
Script (..), toScriptInAnyLang)
12+
import Cardano.Api (PlutusScriptVersion (PlutusScriptV2))
1413
import Cardano.Benchmarking.PlutusScripts.CustomCallTypes
15-
import Cardano.Benchmarking.ScriptAPI
16-
import qualified Data.ByteString.Short as SBS
14+
import Cardano.Benchmarking.ScriptAPI (PlutusBenchScript, mkPlutusBenchScript)
1715
import Language.Haskell.TH.Syntax (Exp (LitE), Lit (StringL), Loc (loc_module), qLocation)
16+
import PlutusLedgerApi.Common (serialiseCompiledCode)
1817
import qualified PlutusLedgerApi.V2 as PlutusV2
1918
import qualified PlutusTx (compile)
2019
import PlutusTx.Foldable (sum)
2120
import PlutusTx.List (all, length)
2221
import PlutusTx.Prelude as Plutus hiding (Semigroup (..), (.), (<$>))
23-
import Prelude as Haskell (String, (.), (<$>))
22+
import Prelude as Haskell ((.), (<$>))
2423

2524

2625
script :: PlutusBenchScript
27-
script = mkPlutusBenchScript scriptName (toScriptInAnyLang (PlutusScript PlutusScriptV2 scriptSerialized))
28-
29-
scriptName :: Haskell.String
30-
scriptName
31-
= prepareScriptName $(LitE . StringL . loc_module <$> qLocation)
26+
script = mkPlutusBenchScript
27+
$(LitE . StringL . loc_module <$> qLocation)
28+
PlutusScriptV2
29+
(serialiseCompiledCode $$(PlutusTx.compile [|| mkValidator ||]))
3230

3331

3432
instance Plutus.Eq CustomCallData where
@@ -66,8 +64,3 @@ unwrap :: BuiltinData -> CustomCallArg
6664
unwrap = PlutusV2.unsafeFromBuiltinData
6765
-- Note: type-constraining unsafeFromBuiltinData decreases script's execution units.
6866

69-
customCallScriptShortBs :: SBS.ShortByteString
70-
customCallScriptShortBs = PlutusV2.serialiseCompiledCode $$(PlutusTx.compile [|| mkValidator ||])
71-
72-
scriptSerialized :: PlutusScript PlutusScriptV2
73-
scriptSerialized = PlutusScriptSerialised customCallScriptShortBs

bench/plutus-scripts-bench/src/Cardano/Benchmarking/PlutusScripts/CustomCallV3.hs

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,28 +6,26 @@
66

77
module Cardano.Benchmarking.PlutusScripts.CustomCallV3 (script) where
88

9-
import Cardano.Api (PlutusScript (..), PlutusScriptV3,
10-
PlutusScriptVersion (..),Script (..), toScriptInAnyLang)
9+
import Cardano.Api (PlutusScriptVersion (PlutusScriptV3))
1110
import Cardano.Benchmarking.PlutusScripts.CustomCallTypes
12-
import Cardano.Benchmarking.ScriptAPI
13-
import qualified Data.ByteString.Short as SBS
11+
import Cardano.Benchmarking.ScriptAPI (PlutusBenchScript, mkPlutusBenchScript)
1412
import Language.Haskell.TH.Syntax (Exp (LitE), Lit (StringL), Loc (loc_module), qLocation)
13+
import PlutusLedgerApi.Common (serialiseCompiledCode)
1514
import qualified PlutusLedgerApi.V3 as PlutusV3
1615
import qualified PlutusTx (compile)
1716
import qualified PlutusTx.Builtins.Internal as BI (BuiltinList, head, snd, tail, unitval,
1817
unsafeDataAsConstr)
1918
import PlutusTx.Foldable (sum)
2019
import PlutusTx.List (all, length)
2120
import PlutusTx.Prelude as Plutus hiding (Semigroup (..), (.), (<$>))
22-
import Prelude as Haskell (String, (.), (<$>))
21+
import Prelude as Haskell ((.), (<$>))
2322

2423

2524
script :: PlutusBenchScript
26-
script = mkPlutusBenchScript scriptName (toScriptInAnyLang (PlutusScript PlutusScriptV3 scriptSerialized))
27-
28-
scriptName :: Haskell.String
29-
scriptName
30-
= prepareScriptName $(LitE . StringL . loc_module <$> qLocation)
25+
script = mkPlutusBenchScript
26+
$(LitE . StringL . loc_module <$> qLocation)
27+
PlutusScriptV3
28+
(serialiseCompiledCode $$(PlutusTx.compile [|| mkValidator ||]))
3129

3230

3331
instance Plutus.Eq CustomCallData where
@@ -76,8 +74,3 @@ mkValidator arg =
7674
unwrap :: BuiltinData -> CustomCallArg
7775
unwrap = PlutusV3.unsafeFromBuiltinData
7876

79-
customCallScriptShortBs :: SBS.ShortByteString
80-
customCallScriptShortBs = PlutusV3.serialiseCompiledCode $$(PlutusTx.compile [|| mkValidator ||])
81-
82-
scriptSerialized :: PlutusScript PlutusScriptV3
83-
scriptSerialized = PlutusScriptSerialised customCallScriptShortBs

bench/plutus-scripts-bench/src/Cardano/Benchmarking/PlutusScripts/EcdsaSecp256k1Loop.hs

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,22 @@
77

88
module Cardano.Benchmarking.PlutusScripts.EcdsaSecp256k1Loop (script) where
99

10-
import Cardano.Api (PlutusScript (..), PlutusScriptV2,
11-
PlutusScriptVersion (..), Script (..), toScriptInAnyLang)
12-
import Cardano.Benchmarking.ScriptAPI
13-
import qualified Data.ByteString.Short as SBS
10+
import Cardano.Api (PlutusScriptVersion (PlutusScriptV2))
11+
import Cardano.Benchmarking.ScriptAPI (PlutusBenchScript, mkPlutusBenchScript)
1412
import Language.Haskell.TH.Syntax (Exp (LitE), Lit (StringL), Loc (loc_module), qLocation)
13+
import PlutusLedgerApi.Common (serialiseCompiledCode)
1514
import qualified PlutusLedgerApi.V2 as PlutusV2
1615
import qualified PlutusTx (compile)
1716
import qualified PlutusTx.Builtins as BI
1817
import PlutusTx.Prelude as P hiding (Semigroup (..), (.), (<$>))
19-
import Prelude as Haskell (String, (.), (<$>))
18+
import Prelude as Haskell ((.), (<$>))
2019

2120

22-
scriptName :: Haskell.String
23-
scriptName
24-
= prepareScriptName $(LitE . StringL . loc_module <$> qLocation)
25-
2621
script :: PlutusBenchScript
27-
script = mkPlutusBenchScript scriptName (toScriptInAnyLang (PlutusScript PlutusScriptV2 scriptSerialized))
22+
script = mkPlutusBenchScript
23+
$(LitE . StringL . loc_module <$> qLocation)
24+
PlutusScriptV2
25+
(serialiseCompiledCode $$(PlutusTx.compile [|| mkValidator ||]))
2826

2927

3028
{-# INLINEABLE mkValidator #-}
@@ -42,8 +40,3 @@ mkValidator _datum red _txContext =
4240
| BI.verifyEcdsaSecp256k1Signature v m s = loop (pred i) v m s
4341
| otherwise = P.traceError "Trace error: ECDSA validation failed"
4442

45-
v2EcdsaLoopScriptShortBs :: SBS.ShortByteString
46-
v2EcdsaLoopScriptShortBs = PlutusV2.serialiseCompiledCode $$(PlutusTx.compile [|| mkValidator ||])
47-
48-
scriptSerialized :: PlutusScript PlutusScriptV2
49-
scriptSerialized = PlutusScriptSerialised v2EcdsaLoopScriptShortBs

bench/plutus-scripts-bench/src/Cardano/Benchmarking/PlutusScripts/EcdsaSecp256k1LoopV3.hs

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,24 @@
44

55
module Cardano.Benchmarking.PlutusScripts.EcdsaSecp256k1LoopV3 (script) where
66

7-
import Cardano.Api (PlutusScript (..), PlutusScriptV3,
8-
PlutusScriptVersion (..), Script (..), toScriptInAnyLang)
9-
import Cardano.Benchmarking.ScriptAPI
10-
import qualified Data.ByteString.Short as SBS
7+
import Cardano.Api (PlutusScriptVersion (PlutusScriptV3))
8+
import Cardano.Benchmarking.ScriptAPI (PlutusBenchScript, mkPlutusBenchScript)
119
import Language.Haskell.TH.Syntax (Exp (LitE), Lit (StringL), Loc (loc_module), qLocation)
10+
import PlutusLedgerApi.Common (serialiseCompiledCode)
1211
import qualified PlutusLedgerApi.V3 as PlutusV3
1312
import qualified PlutusTx (compile)
1413
import qualified PlutusTx.Builtins as Builtins
1514
import qualified PlutusTx.Builtins.Internal as BI (BuiltinList, head, snd, tail, unitval,
1615
unsafeDataAsConstr)
1716
import PlutusTx.Prelude as P hiding (Semigroup (..), (.), (<$>))
18-
import Prelude as Haskell (String, (.), (<$>))
17+
import Prelude as Haskell ((.), (<$>))
1918

2019

21-
scriptName :: Haskell.String
22-
scriptName
23-
= prepareScriptName $(LitE . StringL . loc_module <$> qLocation)
24-
2520
script :: PlutusBenchScript
26-
script = mkPlutusBenchScript scriptName (toScriptInAnyLang (PlutusScript PlutusScriptV3 scriptSerialized))
21+
script = mkPlutusBenchScript
22+
$(LitE . StringL . loc_module <$> qLocation)
23+
PlutusScriptV3
24+
(serialiseCompiledCode $$(PlutusTx.compile [|| mkValidator ||]))
2725

2826

2927
{-# INLINABLE mkValidator #-}
@@ -54,9 +52,3 @@ mkValidator arg =
5452
| Builtins.verifyEcdsaSecp256k1Signature v m s = loop (pred i) v m s
5553
| otherwise = P.traceError "Trace error: ECDSA validation failed"
5654

57-
ecdsaLoopScriptShortBs :: SBS.ShortByteString
58-
ecdsaLoopScriptShortBs = PlutusV3.serialiseCompiledCode $$(PlutusTx.compile [|| mkValidator ||])
59-
60-
scriptSerialized :: PlutusScript PlutusScriptV3
61-
scriptSerialized = PlutusScriptSerialised ecdsaLoopScriptShortBs
62-

bench/plutus-scripts-bench/src/Cardano/Benchmarking/PlutusScripts/HashOntoG2AndAdd.hs

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,26 +9,24 @@
99

1010
module Cardano.Benchmarking.PlutusScripts.HashOntoG2AndAdd (script) where
1111

12-
import Cardano.Api (PlutusScript (..), PlutusScriptV3,
13-
PlutusScriptVersion (..), Script (..), toScriptInAnyLang)
14-
import Cardano.Benchmarking.ScriptAPI
15-
import qualified Data.ByteString.Short as SBS
12+
import Cardano.Api (PlutusScriptVersion (PlutusScriptV3))
13+
import Cardano.Benchmarking.ScriptAPI (PlutusBenchScript, mkPlutusBenchScript)
1614
import GHC.ByteOrder (ByteOrder (LittleEndian))
1715
import Language.Haskell.TH.Syntax (Exp (LitE), Lit (StringL), Loc (loc_module), qLocation)
16+
import PlutusLedgerApi.Common (serialiseCompiledCode)
1817
import qualified PlutusLedgerApi.V3 as PlutusV3
1918
import qualified PlutusTx (compile)
2019
import qualified PlutusTx.Builtins.Internal as BI (BuiltinList, head, snd, tail, unitval,
2120
unsafeDataAsConstr)
2221
import PlutusTx.Prelude as Tx hiding (Semigroup (..), (.), (<$>))
23-
import Prelude as Haskell (String, (.), (<$>))
22+
import Prelude as Haskell ((.), (<$>))
2423

2524

26-
scriptName :: Haskell.String
27-
scriptName
28-
= prepareScriptName $(LitE . StringL . loc_module <$> qLocation)
29-
3025
script :: PlutusBenchScript
31-
script = mkPlutusBenchScript scriptName (toScriptInAnyLang (PlutusScript PlutusScriptV3 scriptSerialized))
26+
script = mkPlutusBenchScript
27+
$(LitE . StringL . loc_module <$> qLocation)
28+
PlutusScriptV3
29+
(serialiseCompiledCode $$(PlutusTx.compile [|| mkValidator ||]))
3230

3331

3432
{-# INLINABLE mkValidator #-}
@@ -61,8 +59,3 @@ mkValidator arg =
6159
| i == 1000000 = BI.unitval
6260
| otherwise = let !_ = hashAndAddG2 l i in loop (pred i) l
6361

64-
hashAndAddG2ShortBs :: SBS.ShortByteString
65-
hashAndAddG2ShortBs = PlutusV3.serialiseCompiledCode $$(PlutusTx.compile [|| mkValidator ||])
66-
67-
scriptSerialized :: PlutusScript PlutusScriptV3
68-
scriptSerialized = PlutusScriptSerialised hashAndAddG2ShortBs

bench/plutus-scripts-bench/src/Cardano/Benchmarking/PlutusScripts/Loop2024.hs

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,21 @@
77

88
module Cardano.Benchmarking.PlutusScripts.Loop2024 (script) where
99

10-
import Cardano.Api (PlutusScript (..), PlutusScriptV1,
11-
PlutusScriptVersion (..), Script (..), toScriptInAnyLang)
12-
import Cardano.Benchmarking.ScriptAPI
13-
import qualified Data.ByteString.Short as SBS
10+
import Cardano.Api (PlutusScriptVersion (PlutusScriptV1))
11+
import Cardano.Benchmarking.ScriptAPI (PlutusBenchScript, mkPlutusBenchScript)
1412
import Language.Haskell.TH.Syntax (Exp (LitE), Lit (StringL), Loc (loc_module), qLocation)
15-
import qualified PlutusLedgerApi.V1 as PlutusV1
13+
import PlutusLedgerApi.Common (serialiseCompiledCode)
1614
import qualified PlutusTx (compile)
1715
import PlutusTx.Builtins (unsafeDataAsI)
1816
import PlutusTx.Prelude hiding (Semigroup (..), unless, (.), (<$>))
1917
import Prelude hiding (pred, ($), (&&), (<), (==))
2018

2119

22-
scriptName :: String
23-
scriptName
24-
= prepareScriptName $(LitE . StringL . loc_module <$> qLocation)
25-
2620
script :: PlutusBenchScript
27-
script = mkPlutusBenchScript scriptName (toScriptInAnyLang (PlutusScript PlutusScriptV1 scriptSerialized))
21+
script = mkPlutusBenchScript
22+
$(LitE . StringL . loc_module <$> qLocation)
23+
PlutusScriptV1
24+
(serialiseCompiledCode $$(PlutusTx.compile [|| mkValidator ||]))
2825

2926

3027
{-# INLINABLE mkValidator #-}
@@ -37,8 +34,3 @@ mkValidator _datum redeemer _txContext
3734
n = unsafeDataAsI redeemer
3835
loop i = if i == 1000000 then () else loop $ pred i
3936

40-
loopScriptShortBs :: SBS.ShortByteString
41-
loopScriptShortBs = PlutusV1.serialiseCompiledCode $$(PlutusTx.compile [|| mkValidator ||])
42-
43-
scriptSerialized :: PlutusScript PlutusScriptV1
44-
scriptSerialized = PlutusScriptSerialised loopScriptShortBs

bench/plutus-scripts-bench/src/Cardano/Benchmarking/PlutusScripts/LoopV3.hs

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,10 @@
44

55
module Cardano.Benchmarking.PlutusScripts.LoopV3 (script) where
66

7-
import Cardano.Api (PlutusScript (..), PlutusScriptV3,
8-
PlutusScriptVersion (..), Script (..), toScriptInAnyLang)
9-
import Cardano.Benchmarking.ScriptAPI
10-
import qualified Data.ByteString.Short as SBS
7+
import Cardano.Api (PlutusScriptVersion (PlutusScriptV3))
8+
import Cardano.Benchmarking.ScriptAPI (PlutusBenchScript, mkPlutusBenchScript)
119
import Language.Haskell.TH.Syntax (Exp (LitE), Lit (StringL), Loc (loc_module), qLocation)
12-
import qualified PlutusLedgerApi.V3 as PlutusV3
10+
import PlutusLedgerApi.Common (serialiseCompiledCode)
1311
import qualified PlutusTx (compile)
1412
import PlutusTx.Builtins (unsafeDataAsI)
1513
import qualified PlutusTx.Builtins.Internal as BI (BuiltinList, head, snd, tail, unitval,
@@ -18,12 +16,11 @@ import PlutusTx.Prelude as Plutus hiding (Semigroup (..), unless, (.),
1816
import Prelude hiding (pred, ($), (&&), (<), (==))
1917

2018

21-
scriptName :: String
22-
scriptName
23-
= prepareScriptName $(LitE . StringL . loc_module <$> qLocation)
24-
2519
script :: PlutusBenchScript
26-
script = mkPlutusBenchScript scriptName (toScriptInAnyLang (PlutusScript PlutusScriptV3 scriptSerialized))
20+
script = mkPlutusBenchScript
21+
$(LitE . StringL . loc_module <$> qLocation)
22+
PlutusScriptV3
23+
(serialiseCompiledCode $$(PlutusTx.compile [|| mkValidator ||]))
2724

2825

2926
{-# INLINABLE mkValidator #-}
@@ -47,8 +44,3 @@ mkValidator arg =
4744

4845
loop i = if i == 1000000 then BI.unitval else loop (pred i)
4946

50-
loopScriptShortBs :: SBS.ShortByteString
51-
loopScriptShortBs = PlutusV3.serialiseCompiledCode $$(PlutusTx.compile [|| mkValidator ||])
52-
53-
scriptSerialized :: PlutusScript PlutusScriptV3
54-
scriptSerialized = PlutusScriptSerialised loopScriptShortBs

bench/plutus-scripts-bench/src/Cardano/Benchmarking/PlutusScripts/Ripemd160.hs

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,23 @@
55

66
module Cardano.Benchmarking.PlutusScripts.Ripemd160 (script) where
77

8-
import Cardano.Api (PlutusScript (..), PlutusScriptV3,
9-
PlutusScriptVersion (..), Script (..), toScriptInAnyLang)
10-
import Cardano.Benchmarking.ScriptAPI
11-
import qualified Data.ByteString.Short as SBS
8+
import Cardano.Api (PlutusScriptVersion (PlutusScriptV3))
9+
import Cardano.Benchmarking.ScriptAPI (PlutusBenchScript, mkPlutusBenchScript)
1210
import Language.Haskell.TH.Syntax (Exp (LitE), Lit (StringL), Loc (loc_module), qLocation)
11+
import PlutusLedgerApi.Common (serialiseCompiledCode)
1312
import qualified PlutusLedgerApi.V3 as PlutusV3
1413
import qualified PlutusTx (compile)
1514
import qualified PlutusTx.Builtins.Internal as BI (BuiltinList, head, snd, tail, unitval,
1615
unsafeDataAsConstr)
1716
import PlutusTx.Prelude as Tx hiding (Semigroup (..), (.), (<$>))
18-
import Prelude as Haskell (String, (.), (<$>))
17+
import Prelude as Haskell ((.), (<$>))
1918

2019

21-
scriptName :: Haskell.String
22-
scriptName
23-
= prepareScriptName $(LitE . StringL . loc_module <$> qLocation)
24-
2520
script :: PlutusBenchScript
26-
script = mkPlutusBenchScript scriptName (toScriptInAnyLang (PlutusScript PlutusScriptV3 scriptSerialized))
21+
script = mkPlutusBenchScript
22+
$(LitE . StringL . loc_module <$> qLocation)
23+
PlutusScriptV3
24+
(serialiseCompiledCode $$(PlutusTx.compile [|| mkValidator ||]))
2725

2826

2927
{-# INLINABLE mkValidator #-}
@@ -51,8 +49,3 @@ mkValidator arg =
5149
| i == 1000000 = BI.unitval
5250
| otherwise = let !res' = Tx.ripemd_160 res in loop (pred i) res'
5351

54-
ripEmd160ShortBs :: SBS.ShortByteString
55-
ripEmd160ShortBs = PlutusV3.serialiseCompiledCode $$(PlutusTx.compile [|| mkValidator ||])
56-
57-
scriptSerialized :: PlutusScript PlutusScriptV3
58-
scriptSerialized = PlutusScriptSerialised ripEmd160ShortBs

bench/plutus-scripts-bench/src/Cardano/Benchmarking/PlutusScripts/SchnorrSecp256k1Loop.hs

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,22 @@
77

88
module Cardano.Benchmarking.PlutusScripts.SchnorrSecp256k1Loop (script) where
99

10-
import Cardano.Api (PlutusScript (..), PlutusScriptV2,
11-
PlutusScriptVersion (..), Script (..), toScriptInAnyLang)
12-
import Cardano.Benchmarking.ScriptAPI
13-
import qualified Data.ByteString.Short as SBS
10+
import Cardano.Api (PlutusScriptVersion (PlutusScriptV2))
11+
import Cardano.Benchmarking.ScriptAPI (PlutusBenchScript, mkPlutusBenchScript)
1412
import Language.Haskell.TH.Syntax (Exp (LitE), Lit (StringL), Loc (loc_module), qLocation)
13+
import PlutusLedgerApi.Common (serialiseCompiledCode)
1514
import qualified PlutusLedgerApi.V2 as PlutusV2
1615
import qualified PlutusTx (compile)
1716
import qualified PlutusTx.Builtins as BI
1817
import PlutusTx.Prelude as P hiding (Semigroup (..), (.), (<$>))
19-
import Prelude as Haskell (String, (.), (<$>))
18+
import Prelude as Haskell ((.), (<$>))
2019

2120

22-
scriptName :: Haskell.String
23-
scriptName
24-
= prepareScriptName $(LitE . StringL . loc_module <$> qLocation)
25-
2621
script :: PlutusBenchScript
27-
script = mkPlutusBenchScript scriptName (toScriptInAnyLang (PlutusScript PlutusScriptV2 scriptSerialized))
22+
script = mkPlutusBenchScript
23+
$(LitE . StringL . loc_module <$> qLocation)
24+
PlutusScriptV2
25+
(serialiseCompiledCode $$(PlutusTx.compile [|| mkValidator ||]))
2826

2927

3028
{-# INLINEABLE mkValidator #-}
@@ -42,8 +40,3 @@ mkValidator _datum red _txContext =
4240
| BI.verifySchnorrSecp256k1Signature v m s = loop (pred i) v m s
4341
| otherwise = P.traceError "Trace error: Schnorr validation failed"
4442

45-
v2SchnorrLoopScriptShortBs :: SBS.ShortByteString
46-
v2SchnorrLoopScriptShortBs = PlutusV2.serialiseCompiledCode $$(PlutusTx.compile [|| mkValidator ||])
47-
48-
scriptSerialized :: PlutusScript PlutusScriptV2
49-
scriptSerialized = PlutusScriptSerialised v2SchnorrLoopScriptShortBs

0 commit comments

Comments
 (0)