optimize small Getters
- Dominant language
- Haskell
- Stars
- 120
- Forks
- 70
- PR merge metrics
- No merged PRs in 30d
Description
After some profiling, i came to the conclusion that current running logic is too complex, in order to support `bytesRead`, we have two `Decoder` type, the overhead of `runGetIncremental` is noticeable when the getter is small(around 100ns compare to cereal on my machine).
This gives binary a disadvantage in various benchmarks, since lots of benchmark just focus on a single combinator, the overhead of running it render this kind of benchmarks meaningless.
There're cases we do need running small getters, but i haven't really need `bytesRead` yet. So let's find a way to improve `bytesRead`, or remove it ?
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by examining the two Decoder types and the runGetIncremental path described in the issue, then reproduce the reported small-getter overhead with the existing benchmarks. Compare the bytesRead requirement with the cases that do not need it and determine whether it can be improved or removed. Done means reducing the small-getter overhead without losing required bytesRead behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- haskell
- Domain
- backend
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100