.uF      !"#$%&'()*+,-./0123456789:;<=>?@ABCDELabelled rose-tree structure(c) Ivan Lazar MiljenovicMITIvan.Miljenovic@gmail.comSafe2EA simple labelled rose-tree data structure also containing the depth.FGHIFGHIFGHISafe JKLMNOPQRSTUVKQRSTUV JKLMNOPQRSTUVCommand-line parsing(c) Ivan Lazar MiljenovicMITIvan.Miljenovic@gmail.comNone!"This is the same as W1 from criterion but with the verbosity set to X& to avoid unnecessary noise on stdout.YZ[\]^_`abcdefgY\Z[]^_`abcdefg YZ[\]^_`abcdefg1Tree-based representation for Criterion and Weigh(c) Ivan Lazar MiljenovicMITIvan.Miljenovic@gmail.comNone%&:OT hInvariant: length == rowDepth(The results from measuring memory usage. MA more explicit tree-like structure for benchmarks than using Criterion's i type. How to weigh a function.An IO-based variant of  .SRemove the explicit tree-like structure into the implicit one used by Criterion.EUseful for embedding the results into an existing benchmark suite.Run the specified benchmarks, printing the results (once they're all complete) to stdout in a tabular format for easier comparisons.jQHuman-readable description of the number of bytes used. Assumed non-negative.knUnlike terminal output, this instance creates columns for benchmarks, weighing, etc. even if they're not used.lnUnlike terminal output, this instance creates columns for benchmarks, weighing, etc. even if they're not used.Mmnopqrstuvhwxyz{|}~ jkl 2mnopqrstuvhwxyz{|}~ jkl$Create tests and benchmarks together(c) Ivan Lazar MiljenovicMITIvan.Miljenovic@gmail.comNone !"9:;<=?I'8A specialised monad used solely for running comparisons.>No lifting is permitted; the only operations permitted are 8, 9 and :.1A convenience class to make it easier to provide  values.You can either:Provide no parameters with mempty&Provide values chained together using  or <>,Use the list instance and provide a list of  values.5Monoidally build up the parameters used to control a  environment.(This will typically be a combination of * with either 2 or 5.6An environment for combining testing and benchmarking.A tree of operations.MAn individual operation potentially consisting of a benchmark and/or test.Label a sub-part of a  TestBench.@Obtain the resulting tests and benchmarks from the specified  TestBench.wRun the specified benchmarks if and only if all tests pass, using a comparison-based format for benchmarking output.For more control, use .As with * but allow specifying a custom default  parameter rather than .jCreate a single benchmark evaluated to normal form, where the results should equal the value specified.Will also weigh the function.tCreate a single benchmark evaluated to weak head normal form, where the results should equal the value specified. A way of writing custom testing/benchmarking statements. You will probably want to use one of the pre-defined versions instead.!VCompare how various input values (of the same type) behave for a specific function. By default:Results are only evaluated to Weak Head Normal Form'. To fully evaluate results, use *..No tests are performed by default; use either 2 or 5 to specify one."As with !H but use the provided list of values to base the benchmarking off of.This is useful in situations where you create an enumeration type to describe everything you're benchmarking and a function that takes one of these values and evaluates it.20 is used on the first value (if non-empty); the ' instance is used to provide labels.# A variant of ". that allows for the function to return an  value.$ A variant of "- where you provide your own equivalent to 2.Most useful with 4.% A variant of " that doesn't use 2, (allowing you to specify your own test).&An extension to " that uses the  and . instances to generate the list of all values.'An extension to # that uses the  and . instances to generate the list of all values.(An extension to $ that uses the  and . instances to generate the list of all values.) A variant of comapreFuncAll that doesn't use 2, (allowing you to specify your own test).*'Evaluate all benchmarks to normal form.+A combination of * and 6, taking into account the common case that you want to consider a value that can - and should - be evaluated to normal form., A variant of + where the results are within IO.-:Evaluate all IO-based benchmarks to weak head normal form..0Evaluate all IO-based benchmarks to normal form./aAllow specifying how benchmarks should be evaluated. This may allow usage of methods such as nfIO), but this has not been tested as yet.0Don't run any benchmarks. I'm not sure why you'd want to do this as there's surely easier/better testing environments available, but this way it's possible.1Don't run any tests. This isn't recommended, but could be useful if all you want to do is run comparisons (potentially because no meaningful tests are possible).2xSpecify a sample baseline value to benchmark and test against (such that the result of applying the function to this a% is what everything should match).>You shouldn't specify this more than once, nor mix it with 1 or 5.3 A variant of 2 where the function returns an  value.4 A variant of 23 that lets you specify how to test for equality.wThe first argument to the provided function will be the "baseline" value; the second will be the value being tested.54Specify a predicate that all results should satisfy.%Note that the last statement between 5, 2 and 13 "wins" in specifying which testing (if any) to do.61Calculate memory usage of the various parameters./This requires running your executable with the -T+ RTS flag. To do so, you can either do:my-program +RTS -T -RTS (may need to add -rtsopts to your  ghc-options in your .cabal file)Add -rtsopts -with-rtsopts=-T to your  `ghc-options` field in your .cabal file.AIf this flag is not provided, then this is equivalent to a no-op.7An IO-based equivalent to 68OBenchmark and test (if specified) this value against the specified function.9aOnly benchmark and possibly weigh (but do not test) this value against the specified function.:WOnly test (but do not benchmark or weigh) this value against the specified function.M -Define the benchmark to be performed, if any.jIf a benchmark is performed, should its memory usage also be calculated? See the documentation for 6 on how to get this work.Should the result be checked?!"#$%&'()*+,-./0123456789:;<=;  !"#$%&'()*+,-./0123456789:;!"#$%&'()+,*-./02345167 89:  ; !"#$%&'()*+,-./0123456789:;<=       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\][^_`abcdefghijklmno[^pqrstuvvwxyzz{|}~ [^(testbench-0.2.1.0-E5AYf19tBpKDDUiYdE6k4p TestBenchTestBench.LabelTreePaths_testbenchTestBench.CommandsTestBench.Evaluate LabelTreeLeafBranchDepthtestBenchConfig GetWeightEvaleNameeBencheWeigh EvalForestEvalTree getWeight getWeightIOflattenBenchForest evalForest Comparison ComparisonM ProvideParamstoParams CompParams TestBenchMOpTree Operation collectiongetTestBenches testBench testBenchWithnfEqwhnfEq mkTestBench compareFunccompareFuncListcompareFuncListIOcompareFuncListWithcompareFuncList'compareFuncAllcompareFuncAllIOcompareFuncAllWithcompareFuncAll'benchNormalForm normalForm normalFormIObenchIObenchNormalFormIO withBenchMode noBenchmarksnoTestsbaseline baselineIO baselineWithtestWithweighweighIOcomp compBenchcompTest$fProvideParams[]ab$fProvideParamsCompParamsab$fMonoidCompParams$fFunctorTestBenchM$fApplicativeTestBenchM$fMonadTestBenchM$fMonadIOTestBenchM$fFunctorComparisonM$fApplicativeComparisonM$fMonadComparisonM$fMonadIOComparisonM foldLTree mapMaybeTreemapMaybeForestleavescatchIOversionbindirlibdirdatadir libexecdir sysconfdir getBinDir getLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName(criterion-1.2.1.0-DarR4Duyo1m1zziqXwxTuRCriterion.Main.Options defaultConfigCriterion.TypesQuiet RunTestBenchVersionListWeighRunrunTestsrunBenchbenchCfg optionParser parseWith versionInforesetUnusedConfig configParser weighIndexArg weighFileArgrowPath Benchmarkbytes$fToNamedRecordRow $fToRecordRowWidthIndex BenchResultsresMean resStdDev resOutVarRowrowLabelrowDepthisLeafrowBench rowWeightPathList EvalConfigEC benchConfig evalParam EvalParamsEPhasBenchhasWeigh nameWidthWeight bytesAllocnumGC GetWeightIO runGetWeightflattenBenchTree checkForest pathLabeltoRowsmakeRowgetBenchResults zeroIndex tryGetWeight weighIndexindex printHeadersprintRowindentPerLevel columnGap columnSpace labelName benchNames benchHeaders weighNames weighHeaders secsWidthaddWidth printBench estLowerBound estUpperBound printWeighpercentcount$fDefaultOrderedRow$fMonoidEvalParamsbaseGHC.BasemappendConfigGHC.ShowShowghc-prim GHC.TypesIOGHC.EnumBoundedEnumrunComparisonMComperCompInfoCIfunctoBenchtoWeightoTestCPwithOpsmkOps getOpTreesOpopNameopBenchopWeighopTest toBenchmarkstoTestswithNamerunTestBenchDepthtreeList singleTreegetDepth runTestBench mkOpsFrom runComparisoncompWithcompOp.: