úΘÈİo      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXY Z [ \ ] ^ _ ` a b c d e f g h i j k l m n  Safe-Inferred opqrstuvwxypuvwxy opqrstuvwxyGHC 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.  z{|}~       z{|}~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. 8APrint some information and exit, without running any benchmarks. 9 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(A configuration with sensible defaults. BConstructor for … values. CDeconstructor for … values. *+,-./0123456789:;<=>?@ABCField to access. Default to use. †‡ˆ‰*+,-./0123456789:;<=>?@ABC*+,-./012345678<;:9=@?>ACB * +,-./012345678<;:9=@?>ABC†‡ˆ‰GHC experimentalbos@serpentine.comNoneD1The monad in which most criterion code executes. DŠ‹EFGDEFGDEFGDŠ‹EFGGHC experimentalbos@serpentine.comNoneH'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. IPrint a "normal" note. JPrint verbose output. KPrint an error message. L#Add to summary CSV (if applicable) HŒIJKL‘’HIJKLHIKJL HŒIJKL‘’GHC experimentalbos@serpentine.comNoneM>Classify outliers in a data set, using the boxplot technique. N?Compute the extent to which outliers in the sample data affect ) the sample mean and standard deviation. O0Count the total number of outliers in a sample. PDisplay the mean of a “ , and characterise the outliers  present in the sample. Q Multiply the Estimate+s in an analysis by the given value, using  ”. R9Perform a bootstrap analysis of a non-parametric sample. SDisplay a report of the  present in a “. MN#Bootstrap estimate of sample mean. Bootstrap estimate of sample  standard deviation. Number of original iterations. OPNumber of iterations used to  compute the sample. QValue to multiply by. R'Confidence interval (between 0 and 1).  Sample data. Number of resamples to perform  when bootstrapping. S MNOPQRS   RQPOMSNMNOPQRSGHC experimentalbos@serpentine.comNoneT/Measured aspects of the execution environment. VClock resolution (in seconds). W.The cost of a single clock call (in seconds). X#Measure the execution environment. TUVWXTUVWXTUVWXTUVWX GHC experimentalbos@serpentine.comNone Y!A problem arose with a template. Z!The template could not be found. b=The path to the template and other files used for generating  reports. cWrite out a series of [ values to a single file, if  configured to do so. dFormat a series of [! values using the given Hastache  template. e!Render the elements of a vector. *For example, given this piece of Haskell:  • $ \name ->  case name of  "foo" -> e "x" foo0It will substitute each value in the vector for x in the  following Hastache template:  {{#foo}}  {{x}}  {{/foo}} f$Render the elements of two vectors. gBAttempt 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" = — $ g [b]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". hLoad 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 Y if the template could  not be found, or an ˜! if no template could be loaded. YZ[\]^_`abcdHastache template. eName to use when substituting. f)Name for elements from the first vector. *Name for elements from the second vector. First vector. Second vector. gDirectories to search.  Name of the file to search for. h Search path. Name of template file. ™YZ[\]^_`abcdefgh[\]^_`adcYZhgbef YZ[\]^_`abcdefgh™ GHC experimentalbos@serpentine.comNonei9Run a single benchmark, and return timings measured when  executing it. š4Run a single benchmark and analyse its performance. j*Run, and analyse, one or more benchmarks. ›)Write summary JUnit file (if applicable) œŸ ¡¢£¤¥iš¦jA predicate that chooses # whether to run a benchmark by its  name. §¨›  !"ij  !"ij œŸ ¡¢£¤¥iš¦j§¨› GHC experimentalbos@serpentine.comNone©Parse a confidence interval. ªParse a positive number. k3The standard options accepted on the command line. lParse command line options. m%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  ]  ] n%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. «BDisplay an error message from a command line parsing failure, and  exit. ©ª¬k­®lmn5Prepare data prior to executing the first benchmark. « !"#klmn!"# mnkl ©ª¬k­®lmn«¯   !" #$%&'()*+,-./01233456789:;<=>?@ABCDEFGHIJK LMNOPQRSTUVWXYZ[[\]^ _ ` a 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 { | } ~€‚ƒ„…†‡ˆ‰Š‹Œ ‘’““”•–—˜™š˜›XœŸ ¡œ¢£Š¤¥ ¦ § ¨ © ª « ¬ ­ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º»criterion-0.6.2.0Criterion.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 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 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.4.2Text.Hastache.Context mkStrContextbytestring-0.10.0.0Data.ByteStringempty Text.Hastache MuLambdaMGHC.IO.Exception IOException$fExceptionTemplateExceptionrunAndAnalyseOnejunit ResultTreeCompareSingle ResultForestResult description_samplesampleAnalysis _outliersplotAllresultForestToCSVcmpcipos parseErrornoArg printBanner printUsage