Account we can bill computation time to.
ModuleAgda-2.7.0.1Haskell2010
Agda.Utils.Benchmark
Tools for benchmarking and accumulating results. Nothing Agda-specific in here.
- 5 types
- 1 class
- 12 values
- PackageAgda-2.7.0.1
- Exports18
- LanguageHaskell2010
- LicenceMIT
- SourceBenchmark.hs
Benchmark trie
10 declarationsRecord when we started billing the current account.
Constructors
Instances3Generic, NFData, Rep
Generic (BenchmarkOn a)Defined in Agda-2.7.0.1 · Agda.Utils.BenchmarkNFData a => NFData (BenchmarkOn a)Defined in Agda-2.7.0.1 · Agda.Utils.Benchmarktype Rep (BenchmarkOn a) = D1 ('MetaDataDefined in Agda-2.7.0.1 · Agda.Utils.Benchmark"BenchmarkOn"
"Agda.Utils.Benchmark"
"Agda-2.7.0.1-DbbZpETDDF1KkwuzEZvfn8"
'False) (C1 ('MetaCons"BenchmarkOff"
'PrefixI 'False) U1 :+: (C1 ('MetaCons"BenchmarkOn"
'PrefixI 'False) U1 :+: C1 ('MetaCons"BenchmarkSome"
'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Account a -> Bool)))))
Benchmark structure is a trie, mapping accounts (phases and subphases) to CPU time spent on their performance.
Constructors
BenchmarkbenchmarkOn :: !BenchmarkOn aAre we benchmarking at all?
currentAccount :: !CurrentAccount aWhat are we billing to currently?
timings :: !Timings aThe accounts and their accumulated timing bill.
Instances5Generic, NFData, Pretty, Null, Rep
Generic (Benchmark a)Defined in Agda-2.7.0.1 · Agda.Utils.BenchmarkNFData a => NFData (Benchmark a)Defined in Agda-2.7.0.1 · Agda.Utils.Benchmark(Ord a, Pretty a) => Pretty (Benchmark a)Defined in Agda-2.7.0.1 · Agda.Utils.BenchmarkPrint benchmark as three-column table with totals.
Null (Benchmark a)Defined in Agda-2.7.0.1 · Agda.Utils.BenchmarkInitial benchmark structure (empty).
type Rep (Benchmark a) = D1 ('MetaDataDefined in Agda-2.7.0.1 · Agda.Utils.Benchmark"Benchmark"
"Agda.Utils.Benchmark"
"Agda-2.7.0.1-DbbZpETDDF1KkwuzEZvfn8"
'False) (C1 ('MetaCons"Benchmark"
'PrefixI 'True) (S1 ('MetaSel ('Just"benchmarkOn"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (BenchmarkOn a)) :*: (S1 ('MetaSel ('Just"currentAccount"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (CurrentAccount a)) :*: S1 ('MetaSel ('Just"timings"
) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Timings a)))))
Semantic editor combinator.
Semantic editor combinator.
Semantic editor combinator.
Add to specified CPU time account.
Benchmarking monad.
8 declarationsMonad with access to benchmarking data.
Associated types
type family BenchPhase (m :: Type -> Type)
Methods
getBenchmark :: m (Benchmark (BenchPhase m))putBenchmark :: Benchmark (BenchPhase m) -> m ()modifyBenchmark :: (Benchmark (BenchPhase m) -> Benchmark (BenchPhase m)) -> m ()finally :: m b -> m c -> m bWe need to be able to terminate benchmarking in case of an exception.
Instances8MonadBench, …
MonadBench TerMDefined in Agda-2.7.0.1 · Agda.Termination.MonadMonadBench TCMDefined in Agda-2.7.0.1 · Agda.TypeChecking.Monad.BaseWe store benchmark statistics in an IORef. This enables benchmarking pure computation, see Agda.Benchmarking.
MonadBench IODefined in Agda-2.7.0.1 · Agda.Benchmarking · orphanMonadBench m => MonadBench (ListT m)Defined in Agda-2.7.0.1 · Agda.Utils.BenchmarkMonadBench m => MonadBench (ExceptT e m)Defined in Agda-2.7.0.1 · Agda.Utils.BenchmarkMonadBench m => MonadBench (ReaderT r m)Defined in Agda-2.7.0.1 · Agda.Utils.BenchmarkMonadBench m => MonadBench (StateT r m)Defined in Agda-2.7.0.1 · Agda.Utils.Benchmark(MonadBench m, Monoid w) => MonadBench (WriterT w m)Defined in Agda-2.7.0.1 · Agda.Utils.Benchmark
Turn benchmarking on/off.
switchBenchmarking :: MonadBench m=> Maybe (Account (BenchPhase m))Maybe new account.
-> m (Maybe (Account (BenchPhase m)))Maybe old account.
Bill current account with time up to now. Switch to new account. Return old account (if any).
Resets the account and the timing information.
Bill a computation to a specific account. Works even if the computation is aborted by an exception.
Bill a CPS function to an account. Can't handle exceptions.
Bill a pure computation to a specific account.