Performance improvements
- 主要言語
- Haskell
- スター
- 1.3k
- フォーク
- 201
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
Currently it is hard working on very large programs, as there is some slowdown on connect/disconnect. This is due to:
1. Redrawing blocks is slow.
2. Algorithm W is exponential in time (empirically, I think). This is further worsened by Type.apply applying every substitution, which is required for fully substituting over some of the 'incomplete' types tagged.
Some ideas:
1. Only redraw blocks which had a change of type. The current behavior is to re-render the connected/disconnected blocks and their parents.
2. When composing substitutions, fully apply them. I'm not sure if this will mess up intermediate substitutions.
3. Maybe cache things that don't change too often.
(I'm opening a new issue instead of reopening #177 as the implementation details have changed)
コントリビューションガイド
調査の方向性
まず、issue で説明されている connect/disconnect の処理、ブロック再描画ロジック、Algorithm W、および Type.apply の実装を特定します。大規模なプログラムをプロファイリングして支配的な低速化要因を特定し、その後、焦点を絞った最適化を現在の動作と比較します。完了基準とベンチマークは指定されていないため、実装前に合意する必要があります。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- haskell
- 領域
- performance
- issue の種類
- リファクタリング
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 活発さ
- 停滞
- 明瞭さ
- 説明が足りない
- 初心者へのやさしさ
- 25/100