GitLab 5.1にNetworkにコミットメッセージなどを表示するプルリクがマージされて、どのような反応があるのか気になっていたのですが、早速、ネットワークの表示が2~4倍遅くなったというありがたいIssueを頂きました。
表示する情報が増えたため、表示が遅くなるのはある程度仕方の無いことなので、「機能改善の要望はFeedback and suggestions forumに投稿してね」とつっこみたいところをグッとこらえて、とりあえず表示の高速化に挑戦することにしました。
※GitLabはIssueの増加が激しいため、明らかな不具合の報告以外はGitHubのIssueには投稿しないようにというポリシーになっています。詳しくはこのへんに書いてあります。
5.0->5.1におけるNetworkの表示速度悪化の要因としては、以下の2点が考えられました。
- コミットへのレビューコメントの件数を表示する機能を追加したため、DBアクセスのオーバーヘッドが増えた
- 表示する情報量が増えたため、ブラウザの描画処理に時間がかかるようになった
1については、コミット1件毎(1リクエストで最大650件)にクエリを発行している部分を1リクエストで1回のクエリを発行するように書き換えました。これで、数百ミリ秒の処理時間を節約できました。
2については、表示可能なコミットの最大件数を半分ぐらいに減らせば簡単に修正できていいかなと考えましたが、そうすると次は「表示できる件数が少なくなった」とIssueを投稿される可能性がありました。
そのため、最初に行っていたグラフ全体の描画処理をブラウザの表示領域付近を部分的に描画するように変更しました。これで、初回の描画処理が最大で1/10程度に軽減できました。
以上の修正により、Networkの描画時間が1/5程度には高速化されたと思います。具体的な変更内容はプルリクを参照して下さい。
それと、表示の高速化のついでに、マウスのドラッグで表示領域の移動をしていたところを縦方向のスクロールバーで移動するように変更し、セレクトボックスでタグの切替が正常に動作していないところも修正しました。
GitLabは毎月22日に定期的にリリースされているので、次回は5/22頃にリリースされると思います。