gauge: small framework for performance measurement and analysis

[ benchmarking, bsd3, development, library, performance, testing ] [ Propose Tags ]

This library provides a powerful but simple way to measure software performance. It provides both a framework for executing and analysing benchmarks and a set of driver functions that makes it easy to build and run benchmarks, and to analyse their results.


[Skip to Readme]

Flags

Manual Flags

NameDescriptionDefault
analysis

Build with statistical analysis support

Enabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.1.0, 0.1.1, 0.1.2, 0.1.3, 0.2.0, 0.2.1, 0.2.2, 0.2.3, 0.2.4, 0.2.5
Change log changelog.md
Dependencies base (>=4.7 && <5), basement (>=0.0.4), deepseq (>=1.1.0.0), directory, process, vector (>=0.7.1) [details]
License BSD-3-Clause
Copyright 2009-2016 Bryan O'Sullivan and others
Author Bryan O'Sullivan <bos@serpentine.com>
Maintainer Vincent Hanquez <vincent@snarc.org>
Revised Revision 2 made by Bodigrim at 2024-05-12T15:05:07Z
Category Development, Performance, Testing, Benchmarking
Home page https://github.com/vincenthz/hs-gauge
Bug tracker https://github.com/vincenthz/hs-gauge/issues
Source repo head: git clone https://github.com/vincenthz/hs-gauge
Uploaded by VincentHanquez at 2019-09-08T00:21:10Z
Distributions Arch:0.2.5, LTSHaskell:0.2.5, NixOS:0.2.5, Stackage:0.2.5
Reverse Dependencies 2 direct, 1 indirect [details]
Downloads 10924 total (41 in the last 30 days)
Rating 2.5 (votes: 3) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2019-09-08 [all 1 reports]

Readme for gauge-0.2.5

[back to package description]

Gauge: a clone of criterion

This is a clone of criterion with a code / dependencies on a diet. It works the same way as criterion for outputing to terminal benchmark data.

features compared to criterion

missing:

  • JSON export
  • HTML/javascript pages
  • Glob benchmark matching

Added:

  • Small condensed output (-s or --small)
  • Raw measurements dumping (CSV)

Future Feature Plan

  • Remove further dependencies
  • storing benchmarks data in CSV and JSON
  • Add a standalone program taking benchmark data files and rendering to html/javascript/graphs
  • Make the library more useful as a standalone library to gather benchmark numbers related to functions in a programatic way

Small mode

It's hard to compare many benchmarks with criterion, so gauge has a --small output:

identity                                 mean 41.65 ns  ( +- 2.246 ns  )
slow                                     mean 163.9 ns  ( +- 9.683 ns  )

Direct dependencies removed compared to criterion

Number of total dependencies (direct & indirect):

  • gauge: 12 dependencies
  • criterion: 63 dependencies

Dependencies removed:

  • Glob 0.8.0
  • abstract-deque 0.3
  • abstract-par 0.3.3
  • aeson 1.1.2.0
  • ansi-terminal 0.6.3.1
  • ansi-wl-pprint 0.6.7.3
  • array 0.5.1.1
  • attoparsec 0.13.1.0
  • base-compat 0.9.3
  • base-orphans 0.6
  • binary 0.8.3.0
  • blaze-builder 0.4.0.2
  • bytestring 0.10.8.1
  • cassava 0.4.5.1
  • cereal 0.5.4.0
  • code-page 0.1.3
  • containers 0.5.7.1
  • directory 1.3.0.0
  • dlist 0.8.0.3
  • erf 2.0.0.0
  • exceptions 0.8.3
  • filepath 1.4.1.1
  • ghc-boot-th 8.0.2
  • hashable 1.2.6.1
  • integer-gmp 1.0.0.1
  • integer-logarithms 1.0.2
  • js-flot 0.8.3
  • js-jquery 3.2.1
  • math-functions 0.2.1.0
  • microstache 1.0.1.1
  • monad-par 0.3.4.8
  • monad-par-extras 0.3.3
  • mtl 2.2.1
  • mwc-random 0.13.6.0
  • optparse-applicative 0.13.2.0
  • parallel 3.2.1.1
  • parsec 3.1.11
  • pretty 1.1.3.3
  • process 1.4.3.0
  • random 1.1
  • scientific 0.3.5.2
  • statistics 0.14.0.2
  • stm 2.4.4.1
  • tagged 0.8.5
  • template-haskell 2.11.1.0
  • text 1.2.2.2
  • time 1.6.0.1
  • time-locale-compat 0.1.1.3
  • transformers-compat 0.5.1.4
  • unix 2.7.2.1
  • unordered-containers 0.2.8.0
  • uuid-types 1.0.3
  • vector-algorithms 0.7.0.1
  • vector-binary-instances 0.2.3.5
  • vector-th-unbox 0.2.1.6

Criterion graph of dependencies:

Criterion

Gauge graph of dependencies:

Gauge