name: streaming-benchmarks
category: Benchmark
version: 0.2.0
license: MIT
license-file: LICENSE
author: Harendra Kumar
maintainer: Harendra Kumar
stability: provisional
homepage: http://github.com/composewell/streaming-benchmarks
bug-reports: http://github.com/composewell/streaming-benchmarks/issues
copyright: Copyright (c) 2017 Harendra Kumar
synopsis: Benchmarks to compare streaming packages
description:
Benchmarks along with with pretty comparative graph generation for streaming
operations and their comparisons across notable Haskell streaming libraries
including `streamly`, `vector`, `streaming`, `machines`, `pipes`, and
`conduit`.
<http://hackage.haskell.org/package/streamly streamly> is a streaming library
with native - high level, declarative and composable concurrency, it
is the primary motivation for these benchmarks.
.
If you are using @stack@ then you can just use @./run.sh@ to run the
benchmarks; use @--quick@ option to get the result quickly; charts will be
generated in the `charts` directory. Use @./run.sh --help@ for all script
options.
.
With any build tool, run the benchmarks with @--csv=results.csv@ as arguments
(you can pass any @gauge@ arguments including @--quick@) and then use
@makecharts results.csv "streamly,vector,..." False@ to create the charts.
The second argument to @makecharts@ is the list of package names, the third
argument is whether to plot full or diff from the first package.
.
See the README file shipped with the package or
<https://github.com/composewell/streaming-benchmarks in the github repo>
for more details. The github repo also shows the latest comparative graphs.
cabal-version: >= 1.10
tested-with: GHC==8.2.2, GHC==8.4.3
build-type: Simple
extra-source-files:
Changelog.md
run.sh
README.rst
licenses/Readme.txt
licenses/LICENSE.machines
stack-8.2.yaml
stack.yaml
stack-pedantic.yaml
source-repository head
type: git
location: git://github.com/composewell/streaming-benchmarks.git
benchmark benchmarks
default-language: Haskell2010
type: exitcode-stdio-1.0
hs-source-dirs: .
main-is: Benchmarks.hs
other-modules: Benchmarks.Common
, Benchmarks.BenchmarkTH
, Benchmarks.Streamly
, Benchmarks.Vector
, Benchmarks.Streaming
-- , Benchmarks.LogicT
-- , Benchmarks.ListT
-- , Benchmarks.ListTransformer
, Benchmarks.Conduit
, Benchmarks.Pipes
, Benchmarks.Machines
, Benchmarks.Drinkery
, Benchmarks.List
, Benchmarks.VectorPure
ghc-options: -O2 -Wall -with-rtsopts "-T"
if impl(ghc >= 8.0)
ghc-options: -Wcompat
-Wunrecognised-warning-flags
-Widentities
-Wincomplete-record-updates
-Wincomplete-uni-patterns
-Wredundant-constraints
-Wnoncanonical-monad-instances
-Wnoncanonical-monadfail-instances
build-depends:
base == 4.*,
deepseq >= 1.4.0 && < 1.5,
gauge >= 0.2.3 && < 0.3,
mtl >= 2 && < 2.3,
random >= 1.0 && < 2.0,
transformers >= 0.4 && < 0.6,
template-haskell >= 2.10 && < 2.14,
vector >= 0.12 && < 0.13,
streamly >= 0.2.1 && < 0.5,
streaming >= 0.1.4 && < 0.3,
machines >= 0.6.0 && < 0.7,
pipes >= 4 && < 4.4,
conduit >= 1.3 && < 1.4,
drinkery >= 0.3 && < 0.4
-- does not build with lts-11.0
-- simple-conduit >= 0.4.0 && < 0.7,
-- list-transformer >= 1.0.2 && < 1.1,
-- list-t >= 0.4.6 && < 1.1,
-- logict >= 0.5.0 && < 0.7,
executable makecharts
default-language: Haskell2010
default-extensions: OverloadedStrings
hs-source-dirs: .
main-is: Charts.hs
ghc-options: -Wall
build-depends:
base == 4.*
, bench-graph >= 0.1 && < 0.2
, bytestring >= 0.9 && < 0.11
, Chart >= 1.6 && < 2
, Chart-diagrams >= 1.6 && < 2
, csv >= 0.1 && < 0.2
, directory >= 1.2 && < 1.4
, split >= 0.2 && < 0.3
, text >= 1.1.1 && < 1.3
, transformers >= 0.4 && < 0.6
, typed-process >= 0.1.0.0 && < 0.3
, getopt-generics >= 0.11 && < 0.14