}vj      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX Y Z [ \ ] ^ _ ` a b c d e f g h i jGHC 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  mean and standard deviation. #Qualitative 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. k      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. lm$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. 0&Whether to run the GC between passes. 1What to plot, and where. 23'Whether to print information and exit. 4 Number of resamples to perform. 5Number of samples to collect. 6Filename of summary CSV 7Whether to run verbosely. 8What to plot. 9Benchmark timings. :*Kernel density estimate of probabilities. ;BSupported plot outputs. Some outputs support width and height in  varying units. A point is 1/72 of an inch (0.353mm). <+Display in a window, dimensions in pixels. = SVG file, dimensions in points. > PNG file, dimensions in pixels. ? PDF file, dimensions in points. @Textual CSV file. AAPrint some information and exit, without running any benchmarks. B Print a help/usaage message. C&Print version information (if known). D"Print a list of known benchmarks. E+Do not actually print-and-exit. (Default.) F-Control the amount of information displayed. GHIJ(A configuration with sensible defaults. KConstructor for no values. LDeconstructor for no values. Field to access. Default to use. pq!,-./0123456789:;<=>?@ABCDEFGHIJKL!,-./01234567;@?>=<8:9AEDCBFIHGJLK!, -./01234567-./012345678:99:;@?>=<<=>?@AEDCBBCDEFIHGGHIJKLGHC experimentalbos@serpentine.comM1The monad in which most criterion code executes. rsNOPMNOPMNOPMNOPGHC experimentalbos@serpentine.com tuvwxQPrint a "normal" note. RPrint verbose output. SPrint an error message. T#Add to summary CSV (if applicable) QRSTQSRTQRSTGHC experimentalbos@serpentine.comUVPlot timing data. The kind of output desired. Benchmark name.  Timing data. WPlot kernel density estimate. The kind of output desired. Benchmark name. Range of x-axis "Points at which KDE was computed. Kernel density estimates. yz{|?Get rid of spaces and other potentially troublesome characters  from output. UVWWVUUVW GHC experimentalbos@serpentine.comX>Classify outliers in a data set, using the boxplot technique. Y?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. Z0Count the total number of outliers in a sample. [Display the mean of a } , and characterise the outliers  present in the sample. Number of iterations used to  compute the sample. \ Multiply the Estimate+s in an analysis by the given value, using  ~. Value to multiply by. ]9Perform a bootstrap analysis of a non-parametric sample. 'Confidence interval (between 0 and 1).  Sample data. Number of resamples to perform  when bootstrapping. ^Display a report of the  present in a }.  XYZ[\]^  ]\[ZX^YXYZ[\]^ GHC experimentalbos@serpentine.com_/Measured aspects of the execution environment. `aClock resolution (in seconds). b.The cost of a single clock call (in seconds). c#Measure the execution environment. _`abc_`abc_`ab`abc GHC experimentalbos@serpentine.comd9Run a single benchmark, and return timings measured when  executing it. 4Run a single benchmark and analyse its performance. e*Run, and analyse, one or more benchmarks. A predicate that chooses # whether to run a benchmark by its  name.  !"#$%de ! "#$%dede GHC experimentalbos@serpentine.com Parse a plot output. Parse a plot type. Parse a confidence interval. Parse a positive number. f3The standard options accepted on the command line. gParse command line options. h%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  ]  ] i%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 display an 800x600 window with curves. C cfgPlot = M.singleton KernelDensity (Window 800 600)  }  / 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.  !"#$%fghi$%! "#hifgfghi  !"#$%$&'()*+,-./01234556789:;<=>?@ABCDEFGHIJKLMNOPQRST UVWXYZ[\]^ _ ` a b c d e f f g h i j k l m n o pqrstustuvw xyz{{|}~c criterion-0.5.1.1Criterion.MultiMapCriterion.Analysis.TypesCriterion.TypesCriterion.MeasurementCriterion.ConfigCriterion.Monad Criterion.IOCriterion.PlotCriterion.AnalysisCriterion.Environment CriterionCriterion.MainMultiMaptoMapfromMap singletonlookupSampleAnalysisanMeananStdDev anOutliersOutlierVarianceovEffect ovFraction OutlierEffectSevereModerateSlight UnaffectedOutliers samplesSeen lowSeverelowMildhighMild highSevere Benchmark BenchGroupPure BenchmarkablerunwhnfnfnfIOwhnfIObenchbgroup benchNamestimetime_getTime runForAtLeastsecsConfig cfgBannercfgConfInterval cfgPerformGCcfgPlotcfgPlotSameAxis cfgPrintExit cfgResamples cfgSamplescfgSummaryFile cfgVerbosityPlotTiming KernelDensity PlotOutputWindowSVGPNGPDFCSV PrintExitHelpVersionListNada VerbosityVerboseNormalQuiet defaultConfigljustfromLJ getConfig getConfigItem withConfignoteprolix printErrorsummaryplotWith plotTimingplotKDEclassifyOutliersoutlierVariance countOutliers analyseMeanscale analyseSample noteOutliers EnvironmentenvClockResolution envClockCostmeasureEnvironment runBenchmark runAndAnalysedefaultOptions parseArgs defaultMaindefaultMainWith addOutliersNFWHNFbase Data.MonoidLast emptyConfig appendConfig runCriterionCritHPrintfType chPrintfImpl PrintfContchPrintfwriteTo escapeCSVputRowmanglestatistics-0.9.0.0Statistics.TypesSampleStatistics.Resampling.BootstraprunAndAnalyseOneplotAll parsePlotplotciposnoArg printBanner printUsage parseError