Slightly better benchmark access

This commit is contained in:
Andrzej Rybczak 2022-06-29 06:46:17 +02:00
parent 1fea5c6cb3
commit 186fac2c27
2 changed files with 8 additions and 3 deletions

View File

@ -17,7 +17,7 @@ the existing Haskell ecosystem.
Main features:
1. Very fast
([benchmarks](https://github.com/haskell-effectful/effectful/tree/master/benchmarks)).
([benchmarks](https://github.com/haskell-effectful/effectful/tree/master/benchmarks/README.md)).
2. Easy to use API (if you know how to use the
[MonadUnliftIO](https://hackage.haskell.org/package/unliftio-core/docs/Control-Monad-IO-Unlift.html#t:MonadUnliftIO)
@ -74,7 +74,7 @@ It's true that its "effects as classes" approach is widely known and used often.
However:
- `mtl` style effects are
[slow](https://github.com/haskell-effectful/effectful/tree/master/benchmarks).
[slow](https://github.com/haskell-effectful/effectful/tree/master/benchmarks/README.md).
- All of most often used monad transformers (except `ReaderT`) used for effect
implementations are rife with [subtle

View File

@ -31,6 +31,11 @@ as that would essentially mean performing whole program specialization.
The code was compiled with GHC 9.2.3 and run on a Ryzen 9 5950x.
*Note:* below results are from a 1000 iteration run. Runs with more iterations
are not included in the analysis since they are proportionally the same, but can
be found
[here](https://github.com/haskell-effectful/effectful/tree/master/benchmarks).
### Countdown
<img src="https://raw.githubusercontent.com/haskell-effectful/effectful/master/benchmarks/bench_countdown_1000.png">
@ -48,7 +53,7 @@ Analysis:
- Its `State` implemented via `IORef` is the fastest of the dynamically
dispatched effects, but it's worth noting that it's neither properly
thread-local nor shared as the underlying `IORef` is shared, but can't be
safely updated with `get` and `put` from multiple threads.
safely accessed with `get` and `put` from multiple threads.
3. `freer-simple` does surprisingly well for a solution that's based on free
monads.