benchmark: Add --databases to benchmark sqlite databases
Rescued from commit 11d6e2e260
which removed
db benchmarks in favor of benchmarking arbitrary git-annex commands. Which
is nice and general, but microbenchmarks are useful too.
This commit is contained in:
parent
27e10fdbd7
commit
25f912de5b
9 changed files with 190 additions and 21 deletions
|
@ -11,10 +11,11 @@ module Command.Benchmark where
|
|||
|
||||
import Command
|
||||
import Types.Benchmark
|
||||
|
||||
#ifdef WITH_BENCHMARK
|
||||
import Database.Benchmark
|
||||
|
||||
import Criterion.Main
|
||||
import Criterion.Main.Options (parseWith, Mode)
|
||||
import Criterion.Main.Options (parseWith)
|
||||
#endif
|
||||
|
||||
cmd :: BenchmarkGenerator -> Command
|
||||
|
@ -23,20 +24,26 @@ cmd generator = command "benchmark" SectionTesting
|
|||
paramNothing
|
||||
(seek generator <$$> optParser)
|
||||
|
||||
#ifndef WITH_BENCHMARK
|
||||
type Mode = ()
|
||||
#endif
|
||||
|
||||
data BenchmarkOptions = BenchmarkOptions CmdParams Mode
|
||||
data BenchmarkOptions
|
||||
= BenchmarkOptions CmdParams CriterionMode
|
||||
| BenchmarkDatabases CriterionMode
|
||||
|
||||
optParser :: CmdParamsDesc -> Parser BenchmarkOptions
|
||||
optParser desc = BenchmarkOptions
|
||||
<$> cmdParams desc
|
||||
optParser desc = benchmarkoptions <|> benchmarkdatabases
|
||||
where
|
||||
benchmarkoptions = BenchmarkOptions
|
||||
<$> cmdParams desc
|
||||
<*> criterionopts
|
||||
benchmarkdatabases = BenchmarkDatabases
|
||||
<$> criterionopts
|
||||
<* flag' ()
|
||||
( long "databases"
|
||||
<> help "benchmark sqlite databases"
|
||||
)
|
||||
#ifdef WITH_BENCHMARK
|
||||
-- parse criterion's options
|
||||
<*> parseWith defaultConfig
|
||||
criterionopts = parseWith defaultConfig
|
||||
#else
|
||||
<*> pure ()
|
||||
criterionopts = pure ()
|
||||
#endif
|
||||
|
||||
seek :: BenchmarkGenerator -> BenchmarkOptions -> CommandSeek
|
||||
|
@ -44,6 +51,7 @@ seek :: BenchmarkGenerator -> BenchmarkOptions -> CommandSeek
|
|||
seek generator (BenchmarkOptions ps mode) = do
|
||||
runner <- generator ps
|
||||
liftIO $ runMode mode [ bench (unwords ps) $ nfIO runner ]
|
||||
seek _ (BenchmarkDatabases mode) = benchmarkDbs mode
|
||||
#else
|
||||
seek _ _ = giveup "git-annex is not built with benchmarking support"
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue