}k      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTU V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j klmnopqrstulqrstulqrstuGHC experimentalbos@serpentine.com;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. v       GHC experimentalbos@serpentine.com+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. wx$A benchmarkable function or action. 8Run a function or action the specified number of times. %The function or action to benchmark. +The number of times to run or evaluate it. 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. "A name to identify the benchmark. !7Group several benchmarks together under a common name. ,A name to identify the group of benchmarks. %Benchmarks to group under this name. ">Retrieve the names of all benchmarks. Grouped benchmarks are ) prefixed with the name of the group they're in.  !"  !"  !"GHC experimentalbos@serpentine.com#$%&'#$%&'%&'#$#$%&'GHC experimentalbos@serpentine.com(!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. . Number of resamples to perform. /Filename of report. 0Number of samples to collect. 1Filename of summary CSV. 2Filename of report template. 3Whether to run verbosely. 4APrint some information and exit, without running any benchmarks. 5 Print a help/usaage message. 6&Print version information (if known). 7"Print a list of known benchmarks. 8+Do not actually print-and-exit. (Default.) 9-Control the amount of information displayed. :;<=(A configuration with sensible defaults. >Constructor for yz values. ?Deconstructor for yz values. Field to access. Default to use. {|()*+,-./0123456789:;<=>?()*+,-./0123487659<;:=?>( )*+,-./0123)*+,-./01234876556789<;::;<=>?GHC experimentalbos@serpentine.com@1The monad in which most criterion code executes. }~ABC@ABC@ABC@ABCGHC experimentalbos@serpentine.com D'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. EPrint a "normal" note. FPrint verbose output. GPrint an error message. H#Add to summary CSV (if applicable) DEFGHDEGFHDEFGHGHC experimentalbos@serpentine.comI>Classify outliers in a data set, using the boxplot technique. J?Compute the extent to which outliers in the sample data affect ) the sample mean and standard deviation. #Bootstrap estimate of sample mean. Bootstrap estimate of sample  standard deviation. Number of original iterations. K0Count the total number of outliers in a sample. LDisplay the mean of a  , and characterise the outliers  present in the sample. Number of iterations used to  compute the sample. M Multiply the Estimate+s in an analysis by the given value, using  . Value to multiply by. N9Perform a bootstrap analysis of a non-parametric sample. 'Confidence interval (between 0 and 1).  Sample data. Number of resamples to perform  when bootstrapping. ODisplay a report of the  present in a .  IJKLMNO   NMLKIOJIJKLMNOGHC experimentalbos@serpentine.comP/Measured aspects of the execution environment. QRClock resolution (in seconds). S.The cost of a single clock call (in seconds). T#Measure the execution environment. PQRSTPQRSTPQRSQRST GHC experimentalbos@serpentine.comU!A problem arose with a template. V!The template could not be found. WXYZ[\]^=The path to the template and other files used for generating  reports. _Write out a series of XW values to a single file, if  configured to do so. `Format a series of XW! values using the given Hastache  template. Hastache template. a!Render the elements of a vector. *For example, given this piece of Haskell:   $ \name ->  case name of  "foo" -> a "x" foo0It will substitute each value in the vector for x in the  following Hastache template:  {{#foo}}  {{x}}  {{/foo}} Name to use when substituting. b$Render the elements of two vectors. )Name for elements from the first vector. *Name for elements from the second vector. First vector. Second vector. cBAttempt 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" =  $ 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". Directories to search.  Name of the file to search for. dLoad 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 U if the template could  not be found, or an ! if no template could be loaded.  Search path. Name of template file. UVWXYZ[\]^_`abcdWXYZ[\]`_UVdc^abUVVWXYZ[\]XYZ[\]^_`abcd GHC experimentalbos@serpentine.come9Run a single benchmark, and return timings measured when  executing it. 4Run a single benchmark and analyse its performance. f*Run, and analyse, one or more benchmarks. A predicate that chooses # whether to run a benchmark by its  name.  !ef  !efef GHC experimentalbos@serpentine.com Parse a confidence interval. Parse a positive number. g3The standard options accepted on the command line. hParse command line options. i%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  ]  ] j%An entry point that can be used as a main function, with  configurable defaults.  Example:   import Criterion.Config * import qualified Criterion.MultiMap as M  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. 5Prepare data prior to executing the first benchmark. BDisplay an error message from a command line parsing failure, and  exit.  !ghij !ijghghij   ! "#$%&'()*+,-./01123456789:;<=>?@ABCDEFG HIJKLMNOPQRSTUVWWXYZ [ \ ] ] ^ _ ` 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{|}~~ T~ criterion-0.6.0.1Criterion.Analysis.TypesCriterion.TypesCriterion.MeasurementCriterion.ConfigCriterion.Monad Criterion.IOCriterion.AnalysisCriterion.EnvironmentCriterion.Report CriterionCriterion.MainPaths_criterionSampleAnalysisanMeananStdDev anOutlierVarOutlierVarianceovEffectovDesc ovFraction OutlierEffectSevereModerateSlight UnaffectedOutliers samplesSeen lowSeverelowMildhighMild highSevere Benchmark BenchGroupPure BenchmarkablerunwhnfnfnfIOwhnfIObenchbgroup benchNamestimetime_getTime runForAtLeastsecsConfig cfgBannercfgConfInterval cfgPerformGC cfgPrintExit cfgResamples cfgReport cfgSamplescfgSummaryFile cfgTemplate cfgVerbosity PrintExitHelpVersionListNada VerbosityVerboseNormalQuiet defaultConfigljustfromLJ getConfig getConfigItem withConfigCritHPrintfTypenoteprolix printErrorsummaryclassifyOutliersoutlierVariance countOutliers analyseMeanscale analyseSample noteOutliers EnvironmentenvClockResolution envClockCostmeasureEnvironmentTemplateExceptionTemplateNotFoundReport reportNumber reportName reportTimesreportAnalysisreportOutliers templateDirreport formatReportvectorvector2 includeFile loadTemplate runBenchmark runAndAnalysedefaultOptions parseArgs defaultMaindefaultMainWithcatchIOversionbindirlibdirdatadir libexecdir getBinDir getLibDir getDataDir getLibexecDirgetDataFileName addOutliersNFWHNFbase Data.MonoidLast emptyConfig appendConfig runCriterion chPrintfImpl PrintfContchPrintfstatistics-0.10.1.0Statistics.TypesSampleStatistics.Resampling.Bootstraphastache-0.2.4Text.Hastache.Context mkStrContextbytestring-0.9.2.0Data.ByteStringempty Text.Hastache MuLambdaMGHC.IO.Exception IOExceptionrunAndAnalyseOneplotAllciposnoArg printBanner printUsage parseError