!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~    Safe-Inferred  GHC experimentalbos@serpentine.com Safe-Inferred!Top-level program configuration. The "version" banner to print. Confidence interval to use. -Kind of matching to use for benchmark names. &Whether to run the GC between passes. 'Whether to print information and exit.  Number of resamples to perform. File to write raw results to. Filename of report. Number of samples to collect. Filename of summary CSV.  Filename of the comparison CSV. Filename of report template. Whether to run verbosely. Filename of JUnit report. Whether to do any measurement. APrint some information and exit, without running any benchmarks.  Print a help/usaage message. &Print version information (if known). "Print a list of known benchmarks. +Do not actually print-and-exit. (Default.) -Control the amount of information displayed. (A configuration with sensible defaults. Constructor for  values. Deconstructor for  values. $ Field to access. Default to use.      GHC experimentalbos@serpentine.comNone 1The monad in which most criterion code executes.  !"# !"# !"# !"#GHC experimentalbos@serpentine.comNone$%&'($%&'(&'($%$%&'(GHC experimentalbos@serpentine.comNone)'An internal class that acts like Printf/ HPrintf. BThe implementation is visible to the rest of the program, but the  details of the class are not. *Print a "normal" note. +Print verbose output. ,Print an error message. -#Add to summary CSV (if applicable) )*+,-)*+,-)*,+- )*+,-GHC experimentalbos@serpentine.comNone.;Result of a bootstrap analysis of a non-parametric sample. 3@Analysis of the extent to which outliers in a sample affect its 4 standard deviation (and to some extent, its mean). 5#Qualitative description of effect. 6%Brief textual description of effect. 7AQuantitative description of effect (a fraction between 0 and 1). 8AA description of the extent to which outliers in the sample data 0 affect the sample mean and standard deviation. 9Above 50% (i.e. measurements  are useless). :Between 10% and 50%. ;Between 1% and 10%. <Less than 1% effect. =8Outliers from sample data, calculated using the boxplot  technique. @:More than 3 times the interquartile range (IQR) below the  first quartile. A:Between 1.5 and 3 times the IQR below the first quartile. B:Between 1.5 and 3 times the IQR above the third quartile. C4More than 3 times the IQR above the third quartile. ./0123456789:;<=>?@ABC./0123456789:;<=>?@ABC=>?@ABC8<;:934567./012./012345678<;:9=>?@ABCGHC experimentalbos@serpentine.comNoneD>Classify outliers in a data set, using the boxplot technique. E?Compute the extent to which outliers in the sample data affect ) the sample mean and standard deviation. F0Count the total number of outliers in a sample. GDisplay the mean of a  , and characterise the outliers  present in the sample. H Multiply the Estimate+s in an analysis by the given value, using  . I9Perform a bootstrap analysis of a non-parametric sample. JDisplay a report of the = present in a . DE#Bootstrap estimate of sample mean. Bootstrap estimate of sample  standard deviation. Number of original iterations. FGNumber of iterations used to  compute the sample. HValue to multiply by. I'Confidence interval (between 0 and 1).  Sample data. Number of resamples to perform  when bootstrapping. J./0123456789:;<=>?@ABCDEFGHIJ=>?@ABC8<;:934567./012IHGFDJEDEFGHIJGHC experimentalbos@serpentine.comNoneK/Measured aspects of the execution environment. MClock resolution (in seconds). N.The cost of a single clock call (in seconds). O#Measure the execution environment. KLMNOKLMNOKLMNOKLMNOGHC experimentalbos@serpentine.comNone P!A problem arose with a template. Q!The template could not be found. Y=The path to the template and other files used for generating  reports. ZWrite out a series of R values to a single file, if  configured to do so. [Format a series of R! values using the given Hastache  template. \!Render the elements of a vector. *For example, given this piece of Haskell:   $ \name ->  case name of  "foo" -> \ "x" foo0It will substitute each value in the vector for x in the  following Hastache template:  {{#foo}}  {{x}}  {{/foo}} ]$Render the elements of two vectors. ^BAttempt to include the contents of a file based on a search path.  Returns 4 if the search fails or the file could not be read. Intended for use with Hastache's , for example:  context "include" =  $ ^ [Y]Hastache template expansion is not performed within the included D file. No attempt is made to ensure that the included file path is A safe, i.e. that it does not refer to an unexpected file such as  "etcpasswd". _Load a Hastache template file. @If the name is an absolute or relative path, the search path is  not2 used, and the name is treated as a literal path. This function throws a P if the template could  not be found, or an ! if no template could be loaded. PQRSTUVWXYZ[Hastache template. \Name to use when substituting. ])Name for elements from the first vector. *Name for elements from the second vector. First vector. Second vector. ^Directories to search.  Name of the file to search for. _ Search path. Name of template file. PQRSTUVWXYZ[\]^_RSTUVWX[ZPQ_^Y\] PQRSTUVWXYZ[\]^_ GHC experimentalbos@serpentine.comNone j+A benchmark may consist of either a single o item  with a name, created with u", or a (possibly nested) group of  js, created with v. nAA container for a pure function to benchmark, and an argument to ) supply to it each time it is evaluated. o$A benchmarkable function or action. p8Run a function or action the specified number of times. qAApply an argument to a function, and evaluate the result to weak  head normal form (WHNF). rAApply an argument to a function, and evaluate the result to head  normal form (NF). sAPerform an action, then evaluate its result to head normal form. @ This is particularly useful for forcing a lazy IO action to be  completely performed. t@Perform an action, then evaluate its result to weak head normal D form (WHNF). This is useful for forcing an IO action whose result ? is an expression to be evaluated down to a more useful value. uCreate a single benchmark. v7Group several benchmarks together under a common name. w1Compare benchmarks against a reference benchmark  (The first u in the given list). MThe results of the comparisons are written to a CSV file specified using the  -r< command line flag. The CSV file uses the following format: *Reference,Name,% faster than the referencex>Retrieve the names of all benchmarks. Grouped benchmarks are ) prefixed with the name of the group they're in. `abcdefghijklmnop%The function or action to benchmark. +The number of times to run or evaluate it. qrstu"A name to identify the benchmark. v,A name to identify the group of benchmarks. %Benchmarks to group under this name. wx`abcdefghijklmnopqrstuvwxopjmlknqrstuvwxdefghic`ba`bacdefghijmlknopqrstuvwx GHC experimentalbos@serpentine.comNoneyz{|}yz{|}yz{|}yz{|}GHC experimentalbos@serpentine.comNone~9Run a single benchmark, and return timings measured when  executing it. 4Run a single benchmark and analyse its performance. *Run, and analyse, one or more benchmarks. )Write summary JUnit file (if applicable) ~A predicate that chooses # whether to run a benchmark by its  name. A predicate that chooses # whether to run a benchmark by its  name. ~ ~ GHC experimentalbos@serpentine.comNoneParse a confidence interval. Parse a positive number. 3The standard options accepted on the command line. Parse command line options. %An entry point that can be used as a main function.  import Criterion.Main   fib :: Int -> Int  fib 0 = 0  fib 1 = 1  fib n = fib (n-1) + fib (n-2)   main = defaultMain [ 0 bgroup "fib" [ bench "10" $ whnf fib 10 0 , bench "35" $ whnf fib 35 0 , bench "37" $ whnf fib 37  ]  ] %An entry point that can be used as a main function, with  configurable defaults.  Example:   import Criterion.Config  import Criterion.Main   myConfig = defaultConfig { ) -- Always GC between runs. ( cfgPerformGC = ljust True  }  / main = defaultMainWith myConfig (return ()) [ ' bench "fib 30" $ whnf fib 30  ] !If you save the above example as "Fib.hs", you should be able  to compile it as follows:   ghc -O --make Fib Run " Fib --help". on the command line to get a list of command  line options. BDisplay an error message from a command line parsing failure, and  exit. 5Prepare data prior to executing the first benchmark. jnopqrstuvwopjnuvwrqst GHC experimentalbos@serpentine.comNonejnopqrstuvw~opjnrqstuwv~ !"#$%&'()*+,- ./0123456789:;;<=>??@ABCDEFGHHIJKLMNOPQRSTUUVWXYZ[[\]^_`abcdefg h i j k l l m n o p q r s q t u v w x y z { | } ~    R    criterion-0.8.0.0Criterion.ConfigCriterion.MonadCriterion.MeasurementCriterion.IO.PrintfCriterion.Analysis.TypesCriterion.AnalysisCriterion.EnvironmentCriterion.ReportCriterion.Types Criterion.IO CriterionCriterion.MainPaths_criterionCriterion.InternalConfig cfgBannercfgConfInterval cfgMatchType cfgPerformGC cfgPrintExit cfgResamples cfgResults cfgReport cfgSamplescfgSummaryFilecfgCompareFile cfgTemplate cfgVerbosity cfgJUnitFile cfgMeasure PrintExitHelpVersionListNada VerbosityVerboseNormalQuiet MatchTypeGlobPrefix defaultConfigljustfromLJ getConfig getConfigItem withConfigtimetime_getTime runForAtLeastsecsCritHPrintfTypenoteprolix printErrorsummarySampleAnalysisanMeananStdDev anOutlierVarOutlierVarianceovEffectovDesc ovFraction OutlierEffectSevereModerateSlight UnaffectedOutliers samplesSeen lowSeverelowMildhighMild highSevereclassifyOutliersoutlierVariance countOutliers analyseMeanscale analyseSample noteOutliers EnvironmentenvClockResolution envClockCostmeasureEnvironmentTemplateExceptionTemplateNotFoundReport reportNumber reportName reportTimesreportAnalysisreportOutliers templateDirreport formatReportvectorvector2 includeFile loadTemplate ResultTreeCompareSingle ResultForestResult descriptionsamplesampleAnalysisoutliers Benchmark BenchCompare BenchGroupPure BenchmarkablerunwhnfnfnfIOwhnfIObenchbgroupbcompare benchNamesheader hGetResults hPutResults readResults writeResults runBenchmark runAndAnalyse runNotAnalysedefaultOptions parseArgs defaultMain makeMatcherdefaultMainWithcatchIOversionbindirlibdirdatadir libexecdir getBinDir getLibDir getDataDir getLibexecDirgetDataFileNamebase Data.MonoidLast emptyConfig appendConfig$fMonoidConfig$fMonoidPrintExit runCriterion chPrintfImpl PrintfContchPrintf$fCritHPrintfType(->)$fCritHPrintfTypeIO$fCritHPrintfTypeCriterion addOutliers$fNFDataSampleAnalysis$fBinarySampleAnalysis$fNFDataOutlierVariance$fBinaryOutlierVariance$fMonoidOutliers$fNFDataOutlierEffect$fBinaryOutlierEffect$fNFDataOutliers$fBinaryOutliersstatistics-0.10.4.1Statistics.TypesSampleStatistics.Resampling.Bootstraphastache-0.5.0Text.Hastache.Context mkStrContextbytestring-0.10.0.2Data.ByteStringempty Text.Hastache MuLambdaMGHC.IO.Exception IOException$fExceptionTemplateExceptionNFWHNF$fBinaryResultTree$fBinaryResult$fShowBenchmark$fBenchmarkableIO$fBenchmarkablePurereadAllrunAndAnalyseOnejunitplotAllprefixflattenresultForestToCSVcmpcipos parseError matchTypenoArg printBanner printUsage