criterion 1.5.2.0 → 1.5.3.0
raw patch · 6 files changed
+14/−19 lines, 6 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Criterion.Report: instance GHC.Exception.Exception Criterion.Report.TemplateException
+ Criterion.Report: instance GHC.Exception.Type.Exception Criterion.Report.TemplateException
- Criterion: env :: NFData env => IO env -> env -> Benchmark -> Benchmark
+ Criterion: env :: NFData env => IO env -> (env -> Benchmark) -> Benchmark
- Criterion: envWithCleanup :: NFData env => IO env -> env -> IO a -> env -> Benchmark -> Benchmark
+ Criterion: envWithCleanup :: NFData env => IO env -> (env -> IO a) -> (env -> Benchmark) -> Benchmark
- Criterion: nf :: NFData b => a -> b -> a -> Benchmarkable
+ Criterion: nf :: NFData b => (a -> b) -> a -> Benchmarkable
- Criterion: nfAppIO :: NFData b => a -> IO b -> a -> Benchmarkable
+ Criterion: nfAppIO :: NFData b => (a -> IO b) -> a -> Benchmarkable
- Criterion: perBatchEnv :: (NFData env, NFData b) => Int64 -> IO env -> env -> IO b -> Benchmarkable
+ Criterion: perBatchEnv :: (NFData env, NFData b) => (Int64 -> IO env) -> (env -> IO b) -> Benchmarkable
- Criterion: perBatchEnvWithCleanup :: (NFData env, NFData b) => Int64 -> IO env -> Int64 -> env -> IO () -> env -> IO b -> Benchmarkable
+ Criterion: perBatchEnvWithCleanup :: (NFData env, NFData b) => (Int64 -> IO env) -> (Int64 -> env -> IO ()) -> (env -> IO b) -> Benchmarkable
- Criterion: perRunEnv :: (NFData env, NFData b) => IO env -> env -> IO b -> Benchmarkable
+ Criterion: perRunEnv :: (NFData env, NFData b) => IO env -> (env -> IO b) -> Benchmarkable
- Criterion: perRunEnvWithCleanup :: (NFData env, NFData b) => IO env -> env -> IO () -> env -> IO b -> Benchmarkable
+ Criterion: perRunEnvWithCleanup :: (NFData env, NFData b) => IO env -> (env -> IO ()) -> (env -> IO b) -> Benchmarkable
- Criterion: toBenchmarkable :: Int64 -> IO () -> Benchmarkable
+ Criterion: toBenchmarkable :: (Int64 -> IO ()) -> Benchmarkable
- Criterion: whnf :: () => a -> b -> a -> Benchmarkable
+ Criterion: whnf :: () => (a -> b) -> a -> Benchmarkable
- Criterion: whnfAppIO :: () => a -> IO b -> a -> Benchmarkable
+ Criterion: whnfAppIO :: () => (a -> IO b) -> a -> Benchmarkable
- Criterion.IO.Printf: note :: (CritHPrintfType r) => String -> r
+ Criterion.IO.Printf: note :: CritHPrintfType r => String -> r
- Criterion.IO.Printf: printError :: (CritHPrintfType r) => String -> r
+ Criterion.IO.Printf: printError :: CritHPrintfType r => String -> r
- Criterion.IO.Printf: prolix :: (CritHPrintfType r) => String -> r
+ Criterion.IO.Printf: prolix :: CritHPrintfType r => String -> r
- Criterion.Main: env :: NFData env => IO env -> env -> Benchmark -> Benchmark
+ Criterion.Main: env :: NFData env => IO env -> (env -> Benchmark) -> Benchmark
- Criterion.Main: envWithCleanup :: NFData env => IO env -> env -> IO a -> env -> Benchmark -> Benchmark
+ Criterion.Main: envWithCleanup :: NFData env => IO env -> (env -> IO a) -> (env -> Benchmark) -> Benchmark
- Criterion.Main: nf :: NFData b => a -> b -> a -> Benchmarkable
+ Criterion.Main: nf :: NFData b => (a -> b) -> a -> Benchmarkable
- Criterion.Main: nfAppIO :: NFData b => a -> IO b -> a -> Benchmarkable
+ Criterion.Main: nfAppIO :: NFData b => (a -> IO b) -> a -> Benchmarkable
- Criterion.Main: perBatchEnv :: (NFData env, NFData b) => Int64 -> IO env -> env -> IO b -> Benchmarkable
+ Criterion.Main: perBatchEnv :: (NFData env, NFData b) => (Int64 -> IO env) -> (env -> IO b) -> Benchmarkable
- Criterion.Main: perBatchEnvWithCleanup :: (NFData env, NFData b) => Int64 -> IO env -> Int64 -> env -> IO () -> env -> IO b -> Benchmarkable
+ Criterion.Main: perBatchEnvWithCleanup :: (NFData env, NFData b) => (Int64 -> IO env) -> (Int64 -> env -> IO ()) -> (env -> IO b) -> Benchmarkable
- Criterion.Main: perRunEnv :: (NFData env, NFData b) => IO env -> env -> IO b -> Benchmarkable
+ Criterion.Main: perRunEnv :: (NFData env, NFData b) => IO env -> (env -> IO b) -> Benchmarkable
- Criterion.Main: perRunEnvWithCleanup :: (NFData env, NFData b) => IO env -> env -> IO () -> env -> IO b -> Benchmarkable
+ Criterion.Main: perRunEnvWithCleanup :: (NFData env, NFData b) => IO env -> (env -> IO ()) -> (env -> IO b) -> Benchmarkable
- Criterion.Main: toBenchmarkable :: Int64 -> IO () -> Benchmarkable
+ Criterion.Main: toBenchmarkable :: (Int64 -> IO ()) -> Benchmarkable
- Criterion.Main: whnf :: () => a -> b -> a -> Benchmarkable
+ Criterion.Main: whnf :: () => (a -> b) -> a -> Benchmarkable
- Criterion.Main: whnfAppIO :: () => a -> IO b -> a -> Benchmarkable
+ Criterion.Main: whnfAppIO :: () => (a -> IO b) -> a -> Benchmarkable
- Criterion.Report: includeFile :: (MonadIO m) => [FilePath] -> FilePath -> m Text
+ Criterion.Report: includeFile :: MonadIO m => [FilePath] -> FilePath -> m Text
- Criterion.Types: Measurement :: Int -> String -> (Vector Measured) -> DataRecord
+ Criterion.Types: Measurement :: Int -> String -> Vector Measured -> DataRecord
- Criterion.Types: [BenchGroup] :: Benchmark
+ Criterion.Types: [BenchGroup] :: () => String -> [Benchmark] -> Benchmark
- Criterion.Types: [Benchmark] :: Benchmark
+ Criterion.Types: [Benchmark] :: () => String -> Benchmarkable -> Benchmark
- Criterion.Types: [Benchmarkable] :: Benchmarkable
+ Criterion.Types: [Benchmarkable] :: forall a. NFData a => {allocEnv :: Int64 -> IO a, cleanEnv :: Int64 -> a -> IO (), runRepeatedly :: a -> Int64 -> IO (), perRun :: Bool} -> Benchmarkable
- Criterion.Types: [Environment] :: Benchmark
+ Criterion.Types: [Environment] :: forall env a. NFData env => IO env -> (env -> IO a) -> (env -> Benchmark) -> Benchmark
- Criterion.Types: env :: NFData env => IO env -> env -> Benchmark -> Benchmark
+ Criterion.Types: env :: NFData env => IO env -> (env -> Benchmark) -> Benchmark
- Criterion.Types: envWithCleanup :: NFData env => IO env -> env -> IO a -> env -> Benchmark -> Benchmark
+ Criterion.Types: envWithCleanup :: NFData env => IO env -> (env -> IO a) -> (env -> Benchmark) -> Benchmark
- Criterion.Types: measure :: Unbox a => Measured -> a -> Vector Measured -> Vector a
+ Criterion.Types: measure :: Unbox a => (Measured -> a) -> Vector Measured -> Vector a
- Criterion.Types: nf :: NFData b => a -> b -> a -> Benchmarkable
+ Criterion.Types: nf :: NFData b => (a -> b) -> a -> Benchmarkable
- Criterion.Types: nfAppIO :: NFData b => a -> IO b -> a -> Benchmarkable
+ Criterion.Types: nfAppIO :: NFData b => (a -> IO b) -> a -> Benchmarkable
- Criterion.Types: perBatchEnv :: (NFData env, NFData b) => Int64 -> IO env -> env -> IO b -> Benchmarkable
+ Criterion.Types: perBatchEnv :: (NFData env, NFData b) => (Int64 -> IO env) -> (env -> IO b) -> Benchmarkable
- Criterion.Types: perBatchEnvWithCleanup :: (NFData env, NFData b) => Int64 -> IO env -> Int64 -> env -> IO () -> env -> IO b -> Benchmarkable
+ Criterion.Types: perBatchEnvWithCleanup :: (NFData env, NFData b) => (Int64 -> IO env) -> (Int64 -> env -> IO ()) -> (env -> IO b) -> Benchmarkable
- Criterion.Types: perRunEnv :: (NFData env, NFData b) => IO env -> env -> IO b -> Benchmarkable
+ Criterion.Types: perRunEnv :: (NFData env, NFData b) => IO env -> (env -> IO b) -> Benchmarkable
- Criterion.Types: perRunEnvWithCleanup :: (NFData env, NFData b) => IO env -> env -> IO () -> env -> IO b -> Benchmarkable
+ Criterion.Types: perRunEnvWithCleanup :: (NFData env, NFData b) => IO env -> (env -> IO ()) -> (env -> IO b) -> Benchmarkable
- Criterion.Types: toBenchmarkable :: Int64 -> IO () -> Benchmarkable
+ Criterion.Types: toBenchmarkable :: (Int64 -> IO ()) -> Benchmarkable
- Criterion.Types: whnf :: () => a -> b -> a -> Benchmarkable
+ Criterion.Types: whnf :: () => (a -> b) -> a -> Benchmarkable
- Criterion.Types: whnfAppIO :: () => a -> IO b -> a -> Benchmarkable
+ Criterion.Types: whnfAppIO :: () => (a -> IO b) -> a -> Benchmarkable
Files
- Criterion/Main.hs +1/−2
- Criterion/Monad.hs +2/−1
- changelog.md +5/−0
- criterion.cabal +4/−4
- examples/Maps.hs +0/−9
- examples/criterion-examples.cabal +2/−3
Criterion/Main.hs view
@@ -75,7 +75,6 @@ import System.Environment (getProgName) import System.Exit (ExitCode(..), exitWith) import System.FilePath.Glob-import System.IO.CodePage (withCP65001) -- | An entry point that can be used as a @main@ function. --@@ -147,7 +146,7 @@ defaultMainWith :: Config -> [Benchmark] -> IO ()-defaultMainWith defCfg bs = withCP65001 $ do+defaultMainWith defCfg bs = do wat <- execParser (describe defCfg) runMode wat bs
Criterion/Monad.hs view
@@ -21,11 +21,12 @@ import Criterion.Monad.Internal (Criterion(..), Crit(..)) import Criterion.Types hiding (measure) import Data.IORef (IORef, newIORef, readIORef, writeIORef)+import System.IO.CodePage (withCP65001) import System.Random.MWC (GenIO, createSystemRandom) -- | Run a 'Criterion' action with the given 'Config'. withConfig :: Config -> Criterion a -> IO a-withConfig cfg (Criterion act) = do+withConfig cfg (Criterion act) = withCP65001 $ do g <- newIORef Nothing runReaderT act (Crit cfg g)
changelog.md view
@@ -1,3 +1,8 @@+1.5.3.0++* Make more functions (e.g., `runMode`) able to print the `µ` character on+ non-UTF-8 encodings.+ 1.5.2.0 * Fix a bug in which HTML reports would render incorrectly when including
criterion.cabal view
@@ -1,5 +1,5 @@ name: criterion-version: 1.5.2.0+version: 1.5.3.0 synopsis: Robust, reliable performance measurement and analysis license: BSD3 license-file: LICENSE@@ -24,8 +24,8 @@ GHC==7.10.3, GHC==8.0.2, GHC==8.2.2,- GHC==8.4.3,- GHC==8.6.1+ GHC==8.4.4,+ GHC==8.6.2 data-files: templates/*.css@@ -99,7 +99,7 @@ mwc-random >= 0.8.0.3, optparse-applicative >= 0.13, parsec >= 3.1.0,- statistics >= 0.14 && < 0.15,+ statistics >= 0.14 && < 0.16, text >= 0.11, time, transformers,
examples/Maps.hs view
@@ -7,7 +7,6 @@ import Data.ByteString (ByteString, pack) import Data.Hashable (Hashable) import System.Random.MWC-import qualified Data.CritBit.Map.Lazy as C import qualified Data.HashMap.Lazy as H import qualified Data.IntMap as I import qualified Data.Map as M@@ -71,16 +70,8 @@ , bench "random" $ whnf hashmap random , bench "revsorted" $ whnf hashmap revsorted ]- , bgroup "CritBit" [- bench "sorted" $ whnf critbit sorted- , bench "random" $ whnf critbit random- , bench "revsorted" $ whnf critbit revsorted- ] ] ]--critbit :: (G.Vector v k, C.CritBitKey k) => v k -> C.CritBit k Int-critbit xs = G.foldl' (\m k -> C.insert k value m) C.empty xs hashmap :: (G.Vector v k, Hashable k, Eq k) => v k -> H.HashMap k Int hashmap xs = G.foldl' (\m k -> H.insert k value m) H.empty xs
examples/criterion-examples.cabal view
@@ -17,8 +17,8 @@ GHC==7.10.3, GHC==8.0.2, GHC==8.2.2,- GHC==8.4.3,- GHC==8.6.1+ GHC==8.4.4,+ GHC==8.6.2 flag conduit-vs-pipes default: True@@ -59,7 +59,6 @@ base == 4.*, bytestring, containers,- critbit, criterion, deepseq, hashable,