Skip to content

Commit aa4d8e1

Browse files
committed
add logging of used rng for testing/debugging
1 parent c5a0a68 commit aa4d8e1

File tree

1 file changed

+26
-15
lines changed
  • plutus-core/cost-model/budgeting-bench

1 file changed

+26
-15
lines changed

plutus-core/cost-model/budgeting-bench/Main.hs

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
-- See CostModelGeneration.md
2+
{-# OPTIONS_GHC -Wno-deprecations #-}
23
module Main (main) where
34

45
import CriterionExtensions (BenchmarkingPhase (Continue, Start), criterionMainWith)
@@ -20,7 +21,7 @@ import Benchmarks.Unit qualified
2021

2122
import Criterion.Main
2223
import Criterion.Types as C
23-
import System.Random (getStdGen)
24+
import System.Random (RandomGen (next, split), StdGen, getStdGen, mkStdGen)
2425

2526
---------------- Miscellaneous ----------------
2627

@@ -42,28 +43,38 @@ import System.Random (getStdGen)
4243
main :: IO ()
4344
main = do
4445
-- We use the initial state of gen repeatedly below, but that doesn't matter.
45-
gen <- System.Random.getStdGen
46+
genEphemeral <- System.Random.getStdGen
47+
let seed = extractSeed genEphemeral
48+
putStrLn $ "Using RNG seed: " ++ show seed
49+
50+
let reusedGen = System.Random.mkStdGen seed
4651

4752
criterionMainWith
4853
Start
4954
defaultConfig $
5055
Benchmarks.Bitwise.makeBenchmarks
51-
<> Benchmarks.Bool.makeBenchmarks gen
52-
<> Benchmarks.ByteStrings.makeBenchmarks gen
53-
<> Benchmarks.Crypto.makeBenchmarks gen
54-
<> Benchmarks.Data.makeBenchmarks gen
55-
<> Benchmarks.Integers.makeBenchmarks gen
56-
<> Benchmarks.Lists.makeBenchmarks gen
57-
<> Benchmarks.Arrays.makeBenchmarks gen
58-
<> Benchmarks.Misc.makeBenchmarks gen
59-
<> Benchmarks.Pairs.makeBenchmarks gen
60-
<> Benchmarks.Strings.makeBenchmarks gen
61-
<> Benchmarks.Tracing.makeBenchmarks gen
62-
<> Benchmarks.Unit.makeBenchmarks gen
56+
<> Benchmarks.Bool.makeBenchmarks reusedGen
57+
<> Benchmarks.ByteStrings.makeBenchmarks reusedGen
58+
<> Benchmarks.Crypto.makeBenchmarks reusedGen
59+
<> Benchmarks.Data.makeBenchmarks reusedGen
60+
<> Benchmarks.Integers.makeBenchmarks reusedGen
61+
<> Benchmarks.Lists.makeBenchmarks reusedGen
62+
<> Benchmarks.Arrays.makeBenchmarks reusedGen
63+
<> Benchmarks.Misc.makeBenchmarks reusedGen
64+
<> Benchmarks.Pairs.makeBenchmarks reusedGen
65+
<> Benchmarks.Strings.makeBenchmarks reusedGen
66+
<> Benchmarks.Tracing.makeBenchmarks reusedGen
67+
<> Benchmarks.Unit.makeBenchmarks reusedGen
6368

6469
{- Run the nop benchmarks with a large time limit (30 seconds) in an attempt to
6570
get accurate results. -}
6671
criterionMainWith
6772
Continue
6873
(defaultConfig { C.timeLimit = 30 }) $
69-
Benchmarks.Nops.makeBenchmarks gen
74+
Benchmarks.Nops.makeBenchmarks reusedGen
75+
76+
-- Hacky way to get a reproducible seed from StdGen
77+
extractSeed :: StdGen -> Int
78+
extractSeed gen =
79+
let (g1, _) = split gen
80+
in fst (next g1)

0 commit comments

Comments
 (0)