- プロジェクトが次第に複雑化し、性能テストのためのリソースも大幅に増えたため、新しいテストシステムが必要になった。
- すべてのコード変更に対してテストを実行しつつ、10分以内にテストが完了し、結果を詳細に分析できる理想的なテストシステムを目指した。
- Figmaの性能は主にCPUとGPUの影響を受けるため、各方式の長所と短所を踏まえて、大きく2つのシステムで構成した。
- クラウドベースのシステム
- Headless Chromiumを実行するGPU付きVMを使用し、並列にテストを実行して10分以内に完了するようにした。
- VMの特性上、外部要因の影響を受けやすいため、約20%の余裕を持たせた。
- ハードウェアベースのシステム
- 古いノートPC(旧型MacBook、WindowsノートPC、Chromebookなど)で構成したシステムですべてのテストをスケジュールし、順次実行した。
- テストには時間がかかるが、実機で現れる微妙な性能変化を詳細に追跡できる。
- 2種類のテストシステムを構築した後、性能改善に取り組んだ結果、良好な成果を得ることができた。
- レンダリング性能の改善
- 最新CPUを備えていない環境で、GPU依存のレンダリング性能を改善するために取り組んだ。
- ストレステストで詳細に調査した結果、一部の機能が特定のハードウェアで大きなオーバーヘッドを発生させていた。
- レンダリング時間を細かく分割し、ローカル作業を優先する新しいアルゴリズムを実装して、旧型ハードウェアで効果的に性能を改善した。
- FigJamの性能改善
- テストを書くのは難しかったが、従来のように顧客からの問い合わせや指標を見て修正するやり方から、テストを見て事前に問題を修正できるようになった。
- CSSの微妙な性能差のように見つけにくい問題も、テストを何十回も繰り返すことで発見し、修正できた。
- 特に性能低下が発生したコード変更を正確に追跡できる点が役に立った。
- 性能改善は難しい領域だが、人が考えることと実際が異なることは多いため、テストと性能測定が非常に重要である。
2件のコメント
テストによってパフォーマンス改善を行ったのは良いのですが……それでもFigmaは依然として深刻なほど遅い気がします。
HNのコメントでも、かなり遅いという不満が相当多いですね。 -_-
特にAdobeに買収されて以降、ものすごく遅くなったと感じるのですが(その前は思ったより速かったのに……)
気のせいでしょうか?
HNスレッドのAI要約