haskell / haskell/binary

optimize small Getters

Open
#124 3 comments 0 reactions 0 assignees View on GitHub
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.