Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add counter emitter and golden tests for profiling.
- Loading branch information
1 parent
0f152db
commit fda50f6
Showing
15 changed files
with
243 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,90 @@ | ||
{-# LANGUAGE DataKinds #-} | ||
{-# LANGUAGE FlexibleContexts #-} | ||
{-# LANGUAGE OverloadedStrings #-} | ||
{-# LANGUAGE ScopedTypeVariables #-} | ||
{-# LANGUAGE TypeApplications #-} | ||
{-# OPTIONS_GHC -fplugin PlutusTx.Plugin #-} | ||
{-# OPTIONS_GHC -fplugin-opt PlutusTx.Plugin:defer-errors #-} | ||
{-# OPTIONS_GHC -fplugin-opt PlutusTx.Plugin:debug-context #-} | ||
{-# OPTIONS_GHC -fplugin-opt PlutusTx.Plugin:profile-all #-} | ||
|
||
-- | Tests for the profiling machinery. | ||
|
||
module Plugin.Profiling.Spec where | ||
import Common | ||
import Lib (goldenPir) | ||
import PlcTestUtils (ToUPlc (toUPlc), goldenUEvalProfile, rethrow, runUPlcProfile) | ||
import Plugin.Basic.Spec | ||
import Plugin.Lib (MyExternalRecord (myExternal), andExternal, evenDirect) | ||
|
||
import Plugin.Data.Spec | ||
import Plugin.Functions.Spec hiding (fib, recursiveFunctions) | ||
import Plugin.Typeclasses.Spec | ||
import qualified PlutusCore.Default as PLC | ||
import qualified PlutusTx.Builtins as Builtins | ||
import PlutusTx.Code (CompiledCode) | ||
import PlutusTx.Plugin (plc) | ||
|
||
import Control.Lens.Combinators (_2) | ||
import Control.Lens.Getter (view) | ||
import Data.Proxy | ||
import Data.Text (Text) | ||
import Prettyprinter.Internal (pretty) | ||
import Prettyprinter.Render.Text (hPutDoc) | ||
import System.IO (IOMode (WriteMode), withFile) | ||
|
||
profiling :: TestNested | ||
profiling = testNested "Profiling" [ | ||
goldenUEvalProfile "fib" [toUPlc fibTest] | ||
, goldenUEvalProfile "fib4" [toUPlc fibTest, toUPlc $ plc (Proxy @"4") (4::Integer)] | ||
, goldenUEvalProfile "addInt" [toUPlc addIntTest] | ||
, goldenUEvalProfile "addInt3" [toUPlc addIntTest, toUPlc $ plc (Proxy @"3") (3::Integer)] | ||
, goldenUEvalProfile "letInFun" [toUPlc letInFunTest, toUPlc $ plc (Proxy @"1") (1::Integer), toUPlc $ plc (Proxy @"4") (4::Integer)] | ||
, goldenUEvalProfile "letInFunMoreArg" [toUPlc letInFunMoreArgTest, toUPlc $ plc (Proxy @"1") (1::Integer), toUPlc $ plc (Proxy @"4") (4::Integer), toUPlc $ plc (Proxy @"5") (5::Integer)] | ||
-- ghc does the function application | ||
, goldenUEvalProfile "id" [toUPlc idTest] | ||
, goldenUEvalProfile "swap" [toUPlc swapTest] | ||
] | ||
|
||
fib :: Integer -> Integer | ||
fib n = if Builtins.equalsInteger n 0 | ||
then 0 | ||
else if Builtins.equalsInteger n 1 | ||
then 1 | ||
else Builtins.addInteger (fib(Builtins.subtractInteger n 1)) (fib(Builtins.subtractInteger n 2)) | ||
|
||
fibTest :: CompiledCode (Integer -> Integer) | ||
-- not using case to avoid literal cases | ||
fibTest = plc (Proxy @"fib") fib | ||
|
||
addInt :: Integer -> Integer -> Integer | ||
addInt x = Builtins.addInteger x | ||
|
||
addIntTest :: CompiledCode (Integer -> Integer -> Integer) | ||
addIntTest = plc (Proxy @"addInt") addInt | ||
|
||
-- \x y -> let f z = z + 1 in f x + f y | ||
letInFunTest :: CompiledCode (Integer -> Integer -> Integer) | ||
letInFunTest = | ||
plc | ||
(Proxy @"letInFun") | ||
(\(x::Integer) (y::Integer) | ||
-> let f z = Builtins.addInteger z 1 in Builtins.addInteger (f x) (f y)) | ||
|
||
-- \x y z -> let f n = n + 1 in z * (f x + f y) | ||
letInFunMoreArgTest :: CompiledCode (Integer -> Integer -> Integer -> Integer) | ||
letInFunMoreArgTest = | ||
plc | ||
(Proxy @"letInFun") | ||
(\(x::Integer) (y::Integer) (z::Integer) | ||
-> let f n = Builtins.addInteger n 1 in | ||
Builtins.multiplyInteger z (Builtins.addInteger (f x) (f y))) | ||
|
||
idTest :: CompiledCode Integer | ||
idTest = plc (Proxy @"id") (id (1::Integer)) | ||
|
||
swap :: (a,b) -> (b,a) | ||
swap (a,b) = (b,a) | ||
|
||
swapTest :: CompiledCode (Integer,Bool) | ||
swapTest = plc (Proxy @"swap") (swap (True,1)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
[ [0] entering Name {nameString = "addInt", nameUnique = Unique {unUnique = 81}} | ||
, [1] exiting Name {nameString = "addInt", nameUnique = Unique {unUnique = 81}} ] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
[ [0] entering Name {nameString = "addInt", nameUnique = Unique {unUnique = 81}} | ||
, [1] exiting Name {nameString = "addInt", nameUnique = Unique {unUnique = 81}} ] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
[] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
[ [0] entering Name {nameString = "fib", nameUnique = Unique {unUnique = 81}} | ||
, [1] entering Name {nameString = "equalsInteger", nameUnique = Unique {unUnique = 87}} | ||
, [2] exiting Name {nameString = "equalsInteger", nameUnique = Unique {unUnique = 87}} | ||
, [3] entering Name {nameString = "equalsInteger", nameUnique = Unique {unUnique = 87}} | ||
, [4] exiting Name {nameString = "equalsInteger", nameUnique = Unique {unUnique = 87}} | ||
, [5] entering Name {nameString = "subtractInteger", nameUnique = Unique {unUnique = 97}} | ||
, [6] exiting Name {nameString = "subtractInteger", nameUnique = Unique {unUnique = 97}} | ||
, [7] entering Name {nameString = "fib", nameUnique = Unique {unUnique = 81}} | ||
, [8] entering Name {nameString = "equalsInteger", nameUnique = Unique {unUnique = 87}} | ||
, [9] exiting Name {nameString = "equalsInteger", nameUnique = Unique {unUnique = 87}} | ||
, [10] entering Name {nameString = "equalsInteger", nameUnique = Unique {unUnique = 87}} | ||
, [11] exiting Name {nameString = "equalsInteger", nameUnique = Unique {unUnique = 87}} | ||
, [12] entering Name {nameString = "subtractInteger", nameUnique = Unique {unUnique = 97}} | ||
, [13] exiting Name {nameString = "subtractInteger", nameUnique = Unique {unUnique = 97}} | ||
, [14] entering Name {nameString = "fib", nameUnique = Unique {unUnique = 81}} | ||
, [15] entering Name {nameString = "equalsInteger", nameUnique = Unique {unUnique = 87}} | ||
, [16] exiting Name {nameString = "equalsInteger", nameUnique = Unique {unUnique = 87}} | ||
, [17] entering Name {nameString = "equalsInteger", nameUnique = Unique {unUnique = 87}} | ||
, [18] exiting Name {nameString = "equalsInteger", nameUnique = Unique {unUnique = 87}} | ||
, [19] entering Name {nameString = "subtractInteger", nameUnique = Unique {unUnique = 97}} | ||
, [20] exiting Name {nameString = "subtractInteger", nameUnique = Unique {unUnique = 97}} | ||
, [21] entering Name {nameString = "fib", nameUnique = Unique {unUnique = 81}} | ||
, [22] entering Name {nameString = "equalsInteger", nameUnique = Unique {unUnique = 87}} | ||
, [23] exiting Name {nameString = "equalsInteger", nameUnique = Unique {unUnique = 87}} | ||
, [24] entering Name {nameString = "equalsInteger", nameUnique = Unique {unUnique = 87}} | ||
, [25] exiting Name {nameString = "equalsInteger", nameUnique = Unique {unUnique = 87}} | ||
, [26] exiting Name {nameString = "fib", nameUnique = Unique {unUnique = 81}} | ||
, [27] entering Name {nameString = "subtractInteger", nameUnique = Unique {unUnique = 97}} | ||
, [28] exiting Name {nameString = "subtractInteger", nameUnique = Unique {unUnique = 97}} | ||
, [29] entering Name {nameString = "fib", nameUnique = Unique {unUnique = 81}} | ||
, [30] entering Name {nameString = "equalsInteger", nameUnique = Unique {unUnique = 87}} | ||
, [31] exiting Name {nameString = "equalsInteger", nameUnique = Unique {unUnique = 87}} | ||
, [32] exiting Name {nameString = "fib", nameUnique = Unique {unUnique = 81}} | ||
, [33] entering Name {nameString = "addInteger", nameUnique = Unique {unUnique = 93}} | ||
, [34] exiting Name {nameString = "addInteger", nameUnique = Unique {unUnique = 93}} | ||
, [35] exiting Name {nameString = "fib", nameUnique = Unique {unUnique = 81}} | ||
, [36] entering Name {nameString = "subtractInteger", nameUnique = Unique {unUnique = 97}} | ||
, [37] exiting Name {nameString = "subtractInteger", nameUnique = Unique {unUnique = 97}} | ||
, [38] entering Name {nameString = "fib", nameUnique = Unique {unUnique = 81}} | ||
, [39] entering Name {nameString = "equalsInteger", nameUnique = Unique {unUnique = 87}} | ||
, [40] exiting Name {nameString = "equalsInteger", nameUnique = Unique {unUnique = 87}} | ||
, [41] entering Name {nameString = "equalsInteger", nameUnique = Unique {unUnique = 87}} | ||
, [42] exiting Name {nameString = "equalsInteger", nameUnique = Unique {unUnique = 87}} | ||
, [43] exiting Name {nameString = "fib", nameUnique = Unique {unUnique = 81}} | ||
, [44] entering Name {nameString = "addInteger", nameUnique = Unique {unUnique = 93}} | ||
, [45] exiting Name {nameString = "addInteger", nameUnique = Unique {unUnique = 93}} | ||
, [46] exiting Name {nameString = "fib", nameUnique = Unique {unUnique = 81}} | ||
, [47] entering Name {nameString = "subtractInteger", nameUnique = Unique {unUnique = 97}} | ||
, [48] exiting Name {nameString = "subtractInteger", nameUnique = Unique {unUnique = 97}} | ||
, [49] entering Name {nameString = "fib", nameUnique = Unique {unUnique = 81}} | ||
, [50] entering Name {nameString = "equalsInteger", nameUnique = Unique {unUnique = 87}} | ||
, [51] exiting Name {nameString = "equalsInteger", nameUnique = Unique {unUnique = 87}} | ||
, [52] entering Name {nameString = "equalsInteger", nameUnique = Unique {unUnique = 87}} | ||
, [53] exiting Name {nameString = "equalsInteger", nameUnique = Unique {unUnique = 87}} | ||
, [54] entering Name {nameString = "subtractInteger", nameUnique = Unique {unUnique = 97}} | ||
, [55] exiting Name {nameString = "subtractInteger", nameUnique = Unique {unUnique = 97}} | ||
, [56] entering Name {nameString = "fib", nameUnique = Unique {unUnique = 81}} | ||
, [57] entering Name {nameString = "equalsInteger", nameUnique = Unique {unUnique = 87}} | ||
, [58] exiting Name {nameString = "equalsInteger", nameUnique = Unique {unUnique = 87}} | ||
, [59] entering Name {nameString = "equalsInteger", nameUnique = Unique {unUnique = 87}} | ||
, [60] exiting Name {nameString = "equalsInteger", nameUnique = Unique {unUnique = 87}} | ||
, [61] exiting Name {nameString = "fib", nameUnique = Unique {unUnique = 81}} | ||
, [62] entering Name {nameString = "subtractInteger", nameUnique = Unique {unUnique = 97}} | ||
, [63] exiting Name {nameString = "subtractInteger", nameUnique = Unique {unUnique = 97}} | ||
, [64] entering Name {nameString = "fib", nameUnique = Unique {unUnique = 81}} | ||
, [65] entering Name {nameString = "equalsInteger", nameUnique = Unique {unUnique = 87}} | ||
, [66] exiting Name {nameString = "equalsInteger", nameUnique = Unique {unUnique = 87}} | ||
, [67] exiting Name {nameString = "fib", nameUnique = Unique {unUnique = 81}} | ||
, [68] entering Name {nameString = "addInteger", nameUnique = Unique {unUnique = 93}} | ||
, [69] exiting Name {nameString = "addInteger", nameUnique = Unique {unUnique = 93}} | ||
, [70] exiting Name {nameString = "fib", nameUnique = Unique {unUnique = 81}} | ||
, [71] entering Name {nameString = "addInteger", nameUnique = Unique {unUnique = 93}} | ||
, [72] exiting Name {nameString = "addInteger", nameUnique = Unique {unUnique = 93}} | ||
, [73] exiting Name {nameString = "fib", nameUnique = Unique {unUnique = 81}} ] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
[ [0] entering Name {nameString = "id", nameUnique = Unique {unUnique = 82}} | ||
, [1] exiting Name {nameString = "id", nameUnique = Unique {unUnique = 82}} ] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
[ [0] entering Name {nameString = "addInteger", nameUnique = Unique {unUnique = 84}} | ||
, [1] exiting Name {nameString = "addInteger", nameUnique = Unique {unUnique = 84}} | ||
, [2] entering Name {nameString = "addInteger", nameUnique = Unique {unUnique = 84}} | ||
, [3] exiting Name {nameString = "addInteger", nameUnique = Unique {unUnique = 84}} | ||
, [4] entering Name {nameString = "addInteger", nameUnique = Unique {unUnique = 84}} | ||
, [5] exiting Name {nameString = "addInteger", nameUnique = Unique {unUnique = 84}} ] |
8 changes: 8 additions & 0 deletions
8
plutus-tx-plugin/test/Plugin/Profiling/letInFunMoreArg.plc.golden
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
[ [0] entering Name {nameString = "addInteger", nameUnique = Unique {unUnique = 85}} | ||
, [1] exiting Name {nameString = "addInteger", nameUnique = Unique {unUnique = 85}} | ||
, [2] entering Name {nameString = "addInteger", nameUnique = Unique {unUnique = 85}} | ||
, [3] exiting Name {nameString = "addInteger", nameUnique = Unique {unUnique = 85}} | ||
, [4] entering Name {nameString = "addInteger", nameUnique = Unique {unUnique = 85}} | ||
, [5] exiting Name {nameString = "addInteger", nameUnique = Unique {unUnique = 85}} | ||
, [6] entering Name {nameString = "multiplyInteger", nameUnique = Unique {unUnique = 90}} | ||
, [7] exiting Name {nameString = "multiplyInteger", nameUnique = Unique {unUnique = 90}} ] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
[ [0] entering Name {nameString = "swap", nameUnique = Unique {unUnique = 88}} | ||
, [1] exiting Name {nameString = "swap", nameUnique = Unique {unUnique = 88}} ] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters