optimize small Getters
- 主要言語
- Haskell
- スター
- 120
- フォーク
- 70
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
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 ?
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
調査の方向性
まず2つのDecoder型とissueで説明されているrunGetIncrementalパスを調査し、既存のベンチマークで報告されている小さなgetterのオーバーヘッドを再現します。bytesRead要件を、それを必要としないケースと比較し、改善または削除できるかを判断します。必要なbytesReadの動作を失わずに小さなgetterのオーバーヘッドを削減できれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- haskell
- 領域
- backend
- issue の種類
- リファクタリング
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 活発さ
- 停滞
- 明瞭さ
- 説明が足りない
- 初心者へのやさしさ
- 25/100