google / google/codeworld

Performance improvements

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

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

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