haskell / haskell/binary

optimize small Getters

オープン
#124 コメント 3 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
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

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。