Skip to content

Commit

Permalink
Add a benchmark for GetFilteredDelegationsAndRewardAccounts
Browse files Browse the repository at this point in the history
  • Loading branch information
lehins committed May 30, 2023
1 parent 71769d7 commit a058a1a
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 5 deletions.
30 changes: 26 additions & 4 deletions libs/ledger-state/bench/Performance.hs
Expand Up @@ -7,15 +7,16 @@
module Main where

import Cardano.Ledger.Address
import Cardano.Ledger.Api.State.Query (queryStakePoolDelegsAndRewards)
import Cardano.Ledger.BaseTypes
import Cardano.Ledger.Binary
import Cardano.Ledger.Core
import Cardano.Ledger.Crypto
import Cardano.Ledger.Shelley.API.Mempool
import Cardano.Ledger.Shelley.API.Wallet (getFilteredUTxO, getUTxO)
import Cardano.Ledger.Shelley.Genesis (ShelleyGenesis (..), fromNominalDiffTimeMicro, mkShelleyGlobals)
import Cardano.Ledger.Shelley.LedgerState
import Cardano.Ledger.State.UTxO
import Cardano.Ledger.UMap
import Cardano.Ledger.UTxO
import Cardano.Ledger.Val
import Cardano.Slotting.EpochInfo (fixedEpochInfo)
Expand All @@ -28,12 +29,14 @@ import Data.ByteString.Base16.Lazy as BSL16
import Data.ByteString.Lazy (ByteString)
import Data.Default.Class (def)
import Data.Foldable as F
import Data.Map.Strict as Map
import qualified Data.Map.Strict as Map
import Data.MapExtras (extractKeys, extractKeysSmallSet)
import Data.Set as Set
import qualified Data.Set as Set
import Lens.Micro ((^.))
import System.Environment (getEnv)
import System.Random.Stateful
import Test.Cardano.Ledger.Api.State.Query (getFilteredDelegationsAndRewardAccounts)
import Test.Cardano.Ledger.Core.Arbitrary (uniformSubset)

main :: IO ()
main = do
Expand All @@ -60,7 +63,8 @@ main = do
es <- readNewEpochState ledgerStateFilePath
putStrLn "Done importing NewEpochState"
let largeKeysNum = 100000
largeKeys <- selectRandomMapKeys 100000 (mkStdGen 2022) (unUTxO (getUTxO es))
stdGen = mkStdGen 2022
largeKeys <- selectRandomMapKeys 100000 stdGen (unUTxO (getUTxO es))
defaultMain
[ env (pure (mkMempoolEnv es slotNo, toMempoolState es)) $ \ ~(mempoolEnv, mempoolState) ->
bgroup
Expand Down Expand Up @@ -109,6 +113,24 @@ main = do
, env (pure setAddr) $
bench "getFilteredOldUTxO" . nf (getFilteredOldUTxO newEpochState)
]
, env (pure es) $ \newEpochState ->
let umap = dsUnified . certDState . lsCertState . esLState $ nesEs newEpochState
elems = umElems umap
creds = runStateGen_ stdGen (uniformSubset (Just 10) (Map.keysSet elems))
in bgroup
( "GetFilteredDelegationsAndRewardAccounts ("
++ show (Set.size creds)
++ "/"
++ show (Map.size elems)
++ ")"
)
[ env (pure creds) $
bench "getFilteredDelegationsAndRewardAccounts"
. nf (getFilteredDelegationsAndRewardAccounts umap)
, env (pure creds) $
bench "queryStakePoolDelegsAndRewards"
. nf (queryStakePoolDelegsAndRewards newEpochState)
]
, bgroup
"DeleteTxOuts"
[ extractKeysBench (unUTxO (getUTxO es)) largeKeysNum largeKeys
Expand Down
3 changes: 2 additions & 1 deletion libs/ledger-state/ledger-state.cabal
Expand Up @@ -102,8 +102,9 @@ benchmark performance
bytestring,
base16-bytestring,
cardano-data,
cardano-ledger-api:{cardano-ledger-api, testlib},
cardano-ledger-binary,
cardano-ledger-core,
cardano-ledger-core:{cardano-ledger-core, testlib},
cardano-ledger-shelley,
cardano-slotting,
containers,
Expand Down

0 comments on commit a058a1a

Please sign in to comment.