concurrency-benchmarks: Benchmarks to compare concurrency APIs

[ benchmark, mit, program ] [ Propose Tags ]

Benchmarks to compare the pure concurrency overhead of various flavors of concurrent streamly streams and the async package.

Use cabal new-bench or stack bench to run the benchmarks. To generate charts, run the benchmarks with --csv-raw=results.csv option and then run makecharts results.csv. Charts are generated in the charts directory.


[Skip to Readme]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.1.0, 0.1.1
Change log Changelog.md
Dependencies base (>=4 && <5), 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), getopt-generics (>=0.11 && <0.14), split (>=0.2 && <0.3), text (>=1.1.1 && <1.3), transformers (>=0.4 && <0.6), typed-process (>=0.1.0.0 && <0.3) [details]
License MIT
Copyright Copyright (c) 2018 Harendra Kumar
Author Harendra Kumar
Maintainer Harendra Kumar
Category Benchmark
Home page http://github.com/composewell/concurrency-benchmarks
Bug tracker http://github.com/composewell/concurrency-benchmarks/issues
Source repo head: git clone git://github.com/composewell/concurrency-benchmarks.git
Uploaded by harendra at 2018-09-06T17:09:36Z
Distributions
Reverse Dependencies 1 direct, 0 indirect [details]
Executables makecharts
Downloads 1250 total (12 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
Last success reported on 2018-09-06 [all 3 reports]

Readme for concurrency-benchmarks-0.1.0

[back to package description]

concurrency-benchmarks

Hackage Build Status Windows Build status

Benchmarks to compare the pure concurrency overhead of various flavors of concurrent streamly streams and the async package.

Use cabal new-bench or stack bench to run the benchmarks. To generate charts, run the benchmarks with --csv-raw=results.csv option and then run makecharts results.csv. Charts are generated in the charts directory.

Methodology

A total of 100,000 tasks are run for each concurrency mechanism being compared. Each task is a noop i.e. it does nothing, just returns. Therefore the benchmark measures the pure overhead of concurrency for the tiniest possible tasks.

Streamly's async and ahead style streams may automatically run the tasks in less number of threads than the actual number of tasks i.e. they may run multiple tasks per thread, if the tasks do not block and have a very low latency. Therefore these streams are much faster on this benchmark. However, the streamly parallel style stream guarantees that each task runs in a separate thread however small it is. For the async package, mapConcurrently_ is used, which runs the tasks but does not collect the results.

Results

These charts compare the streamly master branch and async-2.2.1 on a MacBook Pro with a 2.2 GHz Intel Core i7 processor.

This chart shows the time taken for the benchmark completion.

Comparison of time

This chart shows the maximum rss (resident set size), in other words peak memory consumed during the benchmark run.

Comparison of maxrss

Feedback

Feedback is welcome. Please raise an issue, send a PR or send an email to the author.