@!q      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ [ \ ] ^ _ ` a b c d e f g h i j k l m n o p  Safe-Inferred qrstuvwxyz{rwxyz{ qrstuvwxyz{GHC experimentalbos@serpentine.comNone;Result of a bootstrap analysis of a non-parametric sample. @Analysis of the extent to which outliers in a sample affect its 4 standard deviation (and to some extent, its mean). #Qualitative description of effect. %Brief textual description of effect. AQuantitative description of effect (a fraction between 0 and 1). AA description of the extent to which outliers in the sample data 0 affect the sample mean and standard deviation. Above 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. :Between 1.5 and 3 times the IQR below the first quartile. :Between 1.5 and 3 times the IQR above the third quartile. 4More than 3 times the IQR above the third quartile.  |}~       |}~GHC experimentalbos@serpentine.com Safe-Inferred +A benchmark may consist of either a single  item  with a name, created with !", or a (possibly nested) group of  s, created with ". AA container for a pure function to benchmark, and an argument to ) supply to it each time it is evaluated. $A benchmarkable function or action. 8Run a function or action the specified number of times. AApply an argument to a function, and evaluate the result to weak  head normal form (WHNF). AApply an argument to a function, and evaluate the result to head  normal form (NF). APerform an action, then evaluate its result to head normal form. @ This is particularly useful for forcing a lazy IO action to be  completely performed. @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. !Create a single benchmark. "7Group several benchmarks together under a common name. #1Compare benchmarks against a reference benchmark  (The first ! 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 reference$>Retrieve the names of all benchmarks. Grouped benchmarks are ) prefixed with the name of the group they're in. %The function or action to benchmark. +The number of times to run or evaluate it.  !"A name to identify the benchmark. ",A name to identify the group of benchmarks. %Benchmarks to group under this name. #$ !"#$ !"#$ !"#$GHC experimentalbos@serpentine.comNone%&'()%&'()'()%&%&'()GHC experimentalbos@serpentine.com Safe-Inferred*!Top-level program configuration. ,The "version" banner to print. -Confidence interval to use. .&Whether to run the GC between passes. /'Whether to print information and exit. 0 Number of resamples to perform. 1Filename of report. 2Number of samples to collect. 3Filename of summary CSV. 4 Filename of the comparison CSV. 5Filename of report template. 6Whether to run verbosely. 7Filename of JUnit report. 8Whether to do any measurement. 9APrint 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. B(A configuration with sensible defaults. CConstructor for  values. DDeconstructor for  values. *+,-./0123456789:;<=>?@ABCDField to access. Default to use. *+,-./0123456789:;<=>?@ABCD*+,-./0123456789=<;:>A@?BDC *+,-./0123456789=<;:>A@?BCDGHC experimentalbos@serpentine.comNoneE1The monad in which most criterion code executes. EFGHEFGHEFGHEFGHGHC experimentalbos@serpentine.comNoneI'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. JPrint a "normal" note. KPrint verbose output. LPrint an error message. M#Add to summary CSV (if applicable) IJKLMIJKLMIJLKM IJKLMGHC experimentalbos@serpentine.comNoneN>Classify outliers in a data set, using the boxplot technique. O?Compute the extent to which outliers in the sample data affect ) the sample mean and standard deviation. P0Count the total number of outliers in a sample. QDisplay the mean of a  , and characterise the outliers  present in the sample. R Multiply the Estimate+s in an analysis by the given value, using  . S9Perform a bootstrap analysis of a non-parametric sample. TDisplay a report of the  present in a . NO#Bootstrap estimate of sample mean. Bootstrap estimate of sample  standard deviation. Number of original iterations. PQNumber of iterations used to  compute the sample. RValue to multiply by. S'Confidence interval (between 0 and 1).  Sample data. Number of resamples to perform  when bootstrapping. T NOPQRST   SRQPNTONOPQRSTGHC experimentalbos@serpentine.comNoneU/Measured aspects of the execution environment. WClock resolution (in seconds). X.The cost of a single clock call (in seconds). Y#Measure the execution environment. UVWXYUVWXYUVWXYUVWXY GHC experimentalbos@serpentine.comNone Z!A problem arose with a template. [!The template could not be found. c=The path to the template and other files used for generating  reports. dWrite out a series of \ values to a single file, if  configured to do so. eFormat a series of \! values using the given Hastache  template. f!Render the elements of a vector. *For example, given this piece of Haskell:   $ \name ->  case name of  "foo" -> f "x" foo0It will substitute each value in the vector for x in the  following Hastache template:  {{#foo}}  {{x}}  {{/foo}} g$Render the elements of two vectors. hBAttempt 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" =  $ h [c]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". iLoad 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 Z if the template could  not be found, or an ! if no template could be loaded. Z[\]^_`abcdeHastache template. fName to use when substituting. g)Name for elements from the first vector. *Name for elements from the second vector. First vector. Second vector. hDirectories to search.  Name of the file to search for. i Search path. Name of template file. Z[\]^_`abcdefghi\]^_`abedZ[ihcfg Z[\]^_`abcdefghi GHC experimentalbos@serpentine.comNonej9Run a single benchmark, and return timings measured when  executing it. 4Run a single benchmark and analyse its performance. k*Run, and analyse, one or more benchmarks. )Write summary JUnit file (if applicable) jkA predicate that chooses # whether to run a benchmark by its  name. lA predicate that chooses # whether to run a benchmark by its  name.  !"jkl  !"jkl jkl GHC experimentalbos@serpentine.comNoneParse a confidence interval. Parse a positive number. m3The standard options accepted on the command line. nParse command line options. o%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  ]  ] p%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. mnop5Prepare data prior to executing the first benchmark.  !"#mnop!"# opmn mnop   !" #$%&'()*+,-./01233456789:;<=>?@ABCDEFGHIJKL MNOPQRSTUVWXYZ[\\]^_ ` a b 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 { | } ~   Y       criterion-0.6.2.1Criterion.Analysis.TypesCriterion.TypesCriterion.MeasurementCriterion.ConfigCriterion.Monad Criterion.IOCriterion.AnalysisCriterion.EnvironmentCriterion.Report CriterionCriterion.MainPaths_criterionSampleAnalysisanMeananStdDev anOutlierVarOutlierVarianceovEffectovDesc ovFraction OutlierEffectSevereModerateSlight UnaffectedOutliers samplesSeen lowSeverelowMildhighMild highSevere Benchmark BenchCompare BenchGroupPure BenchmarkablerunwhnfnfnfIOwhnfIObenchbgroupbcompare benchNamestimetime_getTime runForAtLeastsecsConfig cfgBannercfgConfInterval cfgPerformGC cfgPrintExit cfgResamples cfgReport cfgSamplescfgSummaryFilecfgCompareFile cfgTemplate cfgVerbosity cfgJUnitFile cfgMeasure PrintExitHelpVersionListNada VerbosityVerboseNormalQuiet defaultConfigljustfromLJ getConfig getConfigItem withConfigCritHPrintfTypenoteprolix printErrorsummaryclassifyOutliersoutlierVariance countOutliers analyseMeanscale analyseSample noteOutliers EnvironmentenvClockResolution envClockCostmeasureEnvironmentTemplateExceptionTemplateNotFoundReport reportNumber reportName reportTimesreportAnalysisreportOutliers templateDirreport formatReportvectorvector2 includeFile loadTemplate runBenchmark runAndAnalyse runNotAnalysedefaultOptions parseArgs defaultMaindefaultMainWithcatchIOversionbindirlibdirdatadir libexecdir getBinDir getLibDir getDataDir getLibexecDirgetDataFileName addOutliers$fNFDataSampleAnalysis$fNFDataOutlierVariance$fMonoidOutliers$fNFDataOutlierEffect$fNFDataOutliersNFWHNF$fShowBenchmark$fBenchmarkableIO$fBenchmarkablePurebase Data.MonoidLast emptyConfig appendConfig$fMonoidConfig$fMonoidPrintExit runCriterion chPrintfImpl PrintfContchPrintf$fCritHPrintfType(->)$fCritHPrintfTypeIO$fCritHPrintfTypeCriterionstatistics-0.10.2.0Statistics.TypesSampleStatistics.Resampling.Bootstraphastache-0.5.0Text.Hastache.Context mkStrContextbytestring-0.10.0.2Data.ByteStringempty Text.Hastache MuLambdaMGHC.IO.Exception IOException$fExceptionTemplateExceptionrunAndAnalyseOnejunit ResultTreeCompareSingle ResultForestResult description_samplesampleAnalysis _outliersplotAllprefixflattenresultForestToCSVcmpcipos parseErrornoArg printBanner printUsage