h*F?      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                            0.13.0.0  Safe-Inferred" perf+Command-line options for type of statistic.perfCompute the medianperfCompute the averageperfCompute the tenth percentileperf"Compute the average of an IntegralperfCompute a statistic. perfCompute a list of statistics. perfParse command-line  options. perfAdd a statistic to a State Map perf#Linguistic conversion of an ordinal perfCompute all stats.perf3Convert a Map of performance result to a statistic.   Safe-Inferred"^perfThe transformer over Identityperf.Performance measurement transformer storing a  and a map of named results.perfAbstraction of a performance measurement with a pre and a post step wrapping the computation.perfAbstraction of a performance measurement within a monadic context.measure applies a function to a value, returning a tuple of the performance measure, and the computation result.measureM evaluates a monadic value and returns a performance-result tuple.perf'Convert a Measure into a multi measure.perf$Convert a StepMeasure into a MeasureperfConvert a StepMeasure into a Measure running the computation multiple times. perfA single step measurement.!perfA single step measurement."perfMultiple measurement#perfMultiple measurements$perf:Lift an application to a PerfT m, providing a label and a .2Measurements with the same label will be mappended%perf7Lift an application to a PerfT m, forcing the argument.&perf>Lift an application to a PerfT m, forcing argument and result.'perfLift a number to a PerfT m, providing a label, function, and input..Measurements with the same label will be added(perf;Lift a monadic value to a PerfT m, providing a label and a ..Measurements with the same label will be added)perf2lift a pure, unnamed function application to PerfT*perf5lift a monadic, unnamed function application to PerfT+perf(lift an unnamed numeric measure to PerfT,perfRun the performance measure, returning (computational result, measurement).-perfConsume the PerfT layer and return the original monadic result. Fingers crossed, PerfT structure should be completely compiled away..perf1Consume a PerfT layer and return the measurement./perfrun a PerfT and also calculate performance over the entire computation0perfrun a PerfT and calculate excess performance over the entire computation1perfrun a multi PerfT and calculate excess performance over the entire computation2perfperfA single reading of a specific .?perf>tick_ measures the number of nanos it takes to read the clock.@perfWarm up the clock, to avoid a high first measurement. Without a warmup, one or more larger values can occur at the start of a measurement spree, and often are in the zone of an L2 miss.Aperftick from a specific Bperftick f a"strictly evaluates f and a to WHNFreads the clockstrictly evaluates f a to WHNFreads the clockreturns (nanos, f a)Cperf tickWHNF f areads the clockstrictly evaluates f a to WHNF (this may also kick off thunk evaluation in f or a which will also be captured in the cycle count)reads the clockreturns (nanos, f a)Dperf tickLazy f areads the clocklazily evaluates f areads the clockreturns (nanos, f a)Eperf tickForce f adeeply evaluates f and a,reads the clockdeeply evaluates f areads the clockreturns (nanos, f a)FperftickForceArgs f adeeply evaluates f and a,reads the clockstrictly evaluates f a to WHNFreads the clockreturns (nanos, f a)Gperf measures an IO aperf measures an IO aHperfn measurements of a tick2returns a list of Nanos and the last evaluated f aIperfn measurements of a tickIO=returns an IO tuple; list of Nanos and the last evaluated f aJperf tick as a Kperf tick as a Lperftick as a multi-MeasureMperftickWith as a multi-Measure:<;>=?@ABCDEFGHIKLMJ:<;>=?@ABCDEFGHIKLMJ Safe-Inferred"NperfNumber of bytesQperfGHC allocation statistics.XperfConvert Q to a list of numbers.Yperf Labels for Q.Zperf A allocation  with a flag to determine if % should run prior to the measurement.[perf.Measure memory allocation, with a flag to run  prior to the measurement.QRSTUVWXYZ[NOPQRSTUVWXYZ[NOP Safe-Inferredlperf#Register 1 as a performance measuremperf#Count the number of times measured.lmlm Safe-Inferred"nperf!Command-line measurement options.tperfParse command-line n options.uperfunification of the different measurements to being a list of doubles.vperfunification of the different measurements to being a list of doubles.wperf-How to fold the list of performance measures. nopqrstuvw nopqrstuvw Safe-Inferred"%^zperfGolden file options.perf$Comparison data between two results.perfLevels of geometric difference in compared performance that triggers reporting.perf/Options for production of a performance report.perf#Number of times to run a benchmark.perf&Whether to include header information.perfBenchmark nameperfCommand-line parser for perfDefault optionsdefaultReportOptionsReportOptions {reportN = 1000, reportClock = MonotonicRaw, reportStatDType = StatAverage, reportMeasureType = MeasureTime, reportGolden = Golden {golden = "other/bench.perf", check = True, record = False}, reportHeader = Header, reportCompare = CompareLevels {errorLevel = 0.2, warningLevel = 5.0e-2, improvedLevel = 5.0e-2}}perfCommand-line parser for perfParse command-line  options.perfDefault command-line parser.perf7Run and report a benchmark to the console. For example,*reportMain "foo" (fap "sum" sum [1..1000]) would:8run a benchmark for summing the numbers 1 to a thousand.look for saved performance data in other/foo-1000-MeasureTime-StatAverage.perfreport on performance in isolation or versus the canned data file if it exists.1exit with failure if the performace had degraded.perfRun and report a benchmark to the console with the supplied options.perfdefaultCompareLevelsCompareLevels {errorLevel = 0.2, warningLevel = 5.0e-2, improvedLevel = 5.0e-2}perfCommand-line parser for perfWrite results to fileperfRead results from a file.perfCompare two results and produce some notes given level triggers.perf!Console-style header information.perfFormat a comparison.perf!Format a result as lines of text.perfFormat a result as a table.perf&Default filepath is "other/bench.perf"perf6Replace the golden file name stem if it's the default.perfReplace the Golden file path with the suggested stem, but only if the user did not specify a specific file path at the command line.perf'Parse command-line golden file options.perfReport resultsIf a goldenFile is checked, and performance has degraded, the function will exit with  so that 'cabal bench' and other types of processes can signal performance issues.,z{}|~,z{}|~ Safe-Inferred"4perfA set of factors consisting of the dominant order, the dominant order factor and a constant factorperfa set of factors for each order, which represents a full Order specification.perf order typeperfcubicperf quadraticperf^3/2perf N * log Nperflinearperfsqrt Nperflog Nperfconstantperfenumeration of O typesolist [N3,N2,N32,NLogN,N1,N12,LogN,N0]perf(functions to compute performance measurefmap ($ 0) promote_![0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]fmap ($ 1) promote_![1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0] Ordering makes sense around N=10fmap ($ 10) promote_[1000.0,100.0,31.622776601683793,23.02585092994046,10.0,3.1622776601683795,2.302585092994046,1.0]$Having NP may cause big num problemsfmap ($ 1000) promote_[1.0e9,1000000.0,31622.776601683792,6907.755278982137,1000.0,31.622776601683793,6.907755278982137,1.0]perfcreate an Order order N2 1#Order {factors = [0,1,0,0,0,0,0,0]}perf*Calculate the expected performance measurepromote (order N2 1) 10100.0perf0Calculate the expected performance measure per npromote (order N2 1) 10100.0perfCalculate an Order from a given O, an n, and a total performance measurement7A measurement of 1e6 for n=1000 with an order of N2 is:demote N2 1000 10000003Order {factors = [0.0,1.0,0.0,0.0,0.0,0.0,0.0,0.0]}  promote (demote N2 n m) n m == mperf+Calculate an Order from a measure, and an Odemote1 N2 10006Order {factors = [0.0,1000.0,0.0,0.0,0.0,0.0,0.0,0.0]} demote1 N2 m == demote o 1 mperf(find the dominant order, and it's factorbigO o(N2,1.0)perfcompute the runtime component of an Order, defined as the difference between the dominant order and the total for a single run. runtime o100.0perfcompute the BigOrder fromOrder o>BigOrder {bigOrder = N2, bigFactor = 1.0, bigConstant = 100.0}perfconvert a BigOrder to an Order.,toOrder . fromOrder is not a round trip iso.toOrder (fromOrder o)5Order {factors = [0.0,1.0,0.0,0.0,0.0,0.0,0.0,100.0]}perf4The factor for each O given an n, and a measurement.spectrum 100 10000Order {factors = [1.0e-2,1.0,10.0,21.71472409516259,100.0,1000.0,2171.4724095162587,10000.0]}perfThe errors for a list of n's and measurements, based on the spectrum of the last measurement.perf.minimum error order for a list of measurements bestO ns msN1perffit the best order for the last measurement and return it, and the error terms for the measurements estO ns ms(Order {factors = [0.0,0.0,0.0,0.0,102.90746947660953,0.0,0.0,0.0]},[2702.0925305233905,2446.9253052339045,-301.7469476609531,-10317.469476609534,0.0])perffit orders from the last measurement to the first, using the residuals at each step. estOs ns ms[Order {factors = [0.0,0.0,0.0,0.0,102.90746947660953,0.0,0.0,0.0]},Order {factors = [0.0,0.0,-0.32626703235351473,0.0,0.0,0.0,0.0,0.0]},Order {factors = [0.0,0.0,0.0,0.0,0.0,0.0,0.0,24.520084692561625]},Order {factors = [0.0,0.0,0.0,0.0,0.0,0.0,0.0,2432.722690017952]},Order {factors = [0.0,0.0,0.0,0.0,0.0,0.0,0.0,245.1760228452299]}]perf performance curve for a Measure.perf+repetitive Double Meaure performance curve.perftime performance curve.perfBigOrder estimate estOrder (\x -> sum [1..x]) 100 [1,10,100,1000,10000] BigOrder {bigOrder = N1, bigFactor = 76.27652961460446, bigConstant = 0.0} estOrder (\x -> sum $ nub [1..x]) 100 [1,10,100,1000] BigOrder {bigOrder = N2, bigFactor = 13.485763594353541, bigConstant = 0.0}%%  Safe-Inferred"<8perf+Unification of length function applicationsperf(Unification of sum function applicationsperf,Unification of example function applicationsperfAlgorithm examples for testingperfAll the example algorithms.perf2Parse command-line options for algorithm examples.perfLabelsperf Convert an  to an .perf Convert an  to a .perfrun an example measurement.perfAll the sum algorithms.perf Convert an  to a .perf Run a sum algorithm measurement.perftail resursiveperflazy recursion.perfWith argument order flippedperf!Lazy with argument order flipped.perfCo-routine styleperfCo-routine, go styleperfCo-routine, case-styleperfAuxillary style.perf foldr styleperf cata styleperfsumperfMonomorphic sumperfPolymorphic sumperfLambda-style sumperfGHC-style foldr method.perf Fusion checkperfFusion under polymorphperf foldl' fusionperf foldr fusionperfAll the length algorithms.perf Convert an  to a .perfRun a lengths algorithmperftail resursiveperflazy recursion.perfWith argument order flippedperf!Lazy with argument order flipped.perfCo-routine styleperf%Co-routine style as a Case statement.perfAuxillary version.perf foldr styleperf&foldr style with explicit const usage.perf GHC styleperfMonomorphic, GHC styleperfTail recursionperfLazy tail recursionperf+Tail resursion with flipped argument order.perf0Lazy tail resursion with flipped argument order.perf CoroutineperfLazy, coroutineperf Cata styleperfTest of const fusionperfIncrement a list.perf Split a list.  Safe-Inferred># /!"#$%&'()*+,-.01nopqrstuvw:KL<;>=?@ABCDEFGHIMJNOPQRSTUVWZXY[lmz{}|~     !""#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVVWXXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                                                            $perf-0.13.0.0-HWzYfDpSfbpHvmdydmBQXE Perf.Stats Perf.Types Perf.Time Perf.Space Perf.Count Perf.Measure Perf.Report Perf.BigO Perf.AlgosperfPerf StatDType StatAverage StatMedianStatBestmedianaveragetenthaverageIstatDstatDs parseStatDaddStatordyallStatsstatify $fEqStatDType$fShowStatDTypePerfT measurePerf StepMeasureprepostMeasuremeasuremeasureMrepeated toMeasure toMeasureNstepstepMmultimultiMfapafapffapfanfam|$|$||+|runPerfT evalPerfT execPerfTouterslopslops$fApplicativeMeasure$fFunctorMeasure$fApplicativeStepMeasure$fFunctorStepMeasure$fMonadIOPerfT$fFunctorPerfT$fApplicativePerfT $fMonadPerfTNanostoSecs defaultClocknanos nanosWithtick_warmuptickWithticktickWHNFtickLazy tickForce tickForceArgstickIOticksticksIOstepTimetimetimes timesWithBytesunbytes SpaceStatsallocatedBytes gcollects maxLiveBytes gcLiveBytesmaxMemssToList spaceLabelsspace allocation$fNumSpaceStats$fMonoidSpaceStats$fSemigroupSpaceStats $fMonoidBytes$fSemigroupBytes $fShowBytes $fReadBytes $fEqBytes $fOrdBytes $fNumBytes $fRealBytes $fEnumBytes$fIntegralBytes$fReadSpaceStats$fShowSpaceStats$fEqSpaceStatscountcountN MeasureType MeasureTime MeasureSpaceMeasureSpaceTimeMeasureAllocation MeasureCount parseMeasure measureDs measureLabelsmeasureFinalStat$fEqMeasureType$fShowMeasureTypeGoldengoldencheckrecord CompareResult oldResult newResult noteResult CompareLevels errorLevel warningLevel improvedLevel ReportOptionsreportN reportClockreportStatDTypereportMeasureType reportGolden reportHeader reportCompareHeaderNoHeaderName parseHeaderdefaultReportOptionsparseReportOptionsinfoReportOptions reportMainreportMainWithdefaultCompareLevelsparseCompareLevels writeResult readResult compareNote reportOrg2D defaultGoldenreplaceDefaultFilePath parseGoldenreport$fEqReportOptions$fShowReportOptions$fGenericReportOptions$fGenericGolden $fEqGolden $fShowGolden$fShowCompareResult$fEqCompareResult$fEqCompareLevels$fShowCompareLevels $fEqHeader $fShowHeader$fGenericHeaderBigOrderbigOrder bigFactor bigConstantOrderfactorsON3N2N32NLogNN1N12LogNN0olistpromote_orderpromotepromote1demotedemote1bigOruntime fromOrdertoOrderspectrumdiffsbestOestOestOsmcurvedcurvetcurveestOrder $fNumOrder $fEqBigOrder $fOrdBigOrder$fShowBigOrder$fGenericBigOrder$fFunctorBigOrder $fEqOrder $fOrdOrder $fShowOrder$fGenericOrder$fFunctorOrder$fEqO$fOrdO$fShowO $fGenericO$fEnumO LengthPattern LengthPoly LengthMono SumPatternSumFuse SumFusePolySumPolySumMonoExamplePatternPatternSumFuse PatternSumPatternLengthFPatternConstFuse PatternMapInc PatternNoOpExampleExampleSumFuse ExampleSumExampleLengthFExampleConstFuse ExampleMapInc ExampleNoOp allExamples parseExample exampleLabelexamplePattern testExample statExamplesallSumstestSumstatSumssumTail sumTailLazysumFlip sumFlipLazysumCosumCoGo sumCoCasesumAuxsumFoldrsumCatasumSumsumMonosumPoly sumLambdasumFsumFuse sumFusePoly sumFuseFoldl' sumFuseFoldr allLengths testLength statLengths lengthTaillengthTailLazy lengthFliplengthFlipLazylengthCo lengthCoCase lengthAux lengthFoldrlengthFoldrConstlengthF lengthFMono recurseTailrecurseTailLazy recurseFliprecurseFlipLazy recurseCo recurseCoLazy recurseCata constFusemapInc splitHalf $fEqExample $fShowExample"clock-0.8.4-DpwZZvX18mTBnhmsYbUoyD System.Clock MonotonicRaw ThreadCPUTimeClock tickIOWithbase System.Mem performGC parseClock formatHeader formatCompare formatTextreplaceGoldenDefaultGHC.IO.Exception ExitFailure