Unity を検索

取り上げているトピック
シェア

同じプロジェクトの 2 つの異なるバージョンのパフォーマンスを比較する必要に迫られたことはありませんか?アセットの修正やコード修正、最適化や設定変更、あるいは Unity のバージョンのアップグレードを行った結果、どのような影響がもたらされたか、確認したいことはありませんか?本記事では、このような場合に Profile Analyzer(プレビュー版)を活用する方法をご紹介します。

本ツール開発の経緯

私たち Unity の Platform Performance チームでは、あらゆる種類のパフォーマンス問題の調査を、Unity の全バージョン・全対応プラットフォームで行っています。こうした調査を行うに当たって、ネイティブのプラットフォームツールのほかに欠かせないのは、言うまでもなく Unity プロファイラーです。

このような調査のひとつを行う中で私たちは、分析が必要なデータに最も関連性の高いフレームを特定することが大きな課題となっていることに気付きました。そこで、プロファイラーデータの複数のフレームをまとめて、任意のマーカーと関連性の高いフレームを特定するためのツールを構築しました。これにより、挙動の変化の原因をより正確に特定することが可能になりました。

単一のデータセットを分析する

Profiler ウィンドウ内の現在のフレームの一式から、Profile Analyzer の Single ビューに追加することができます。これは CPU データを分析し、フレーム、スレッド、およびマーカー別の消費時間や処理回数を(その最小値・最大値・中央値・平均値・上位/下位四分位値も含めて)視覚化し、Profiler ウィンドウのそれらが表示されるフレームにリンクを送り返します。時間・フレーム・スレッド・マーカーの分布もヒストグラムと箱ひげ図で提供されており、経時的な挙動を視覚的に確認しやすくなっています。

2 つのデータセットを比較する

Single ビューに表示された情報を踏まえた上で、Compare ビューでは 2 つのデータセットを読み込むことができます。これらはセットごとに異なる色で表示されます。2 つのデータセットの違いが表として視覚的に整理されます。また分布の違いもヒストグラフと箱ひげ図として表示されます。コードやデータの変更前後、プロジェクト設定の変更前後、Unity バージョンのアップグレード前後などの 2 つのデータセットを比較することができます。

包括的なフィルタリングシステムが Single ビューと Compare ビューの両方で利用可能となっており、分析情報を、マーカーやスレッド、フレーム、スタック深度に絞り込むことができます。

データをフィルタリングする

フィルタリング制御を使ってデータセットを絞り込むことができます。名前の部分的な一致、実行されるスレッド、特定のスタック深度などによってマーカーを制限することが可能です。

特定の名前によってフィルタリングした上で、さらに別の名前を持つマーカーを除外することも可能です。こうすることで、フィルタリング結果から、統計上関係のないマーカーや、分析表示を何らかの形で妨げているマーカーをすべて削除することができます。また、ウィンドウの上部にあるフレーム制御を使って、フレームのサブセットを選択することも可能です。

Compare ビューでは 2 つのデータセットが自動的に深度に合わせて表示されるので、トップレベルのマーカーが正しく整列されるようになっています。ただし、これは「Auto Right」のチェックボックスと Left・Right の深度制御でオーバーライド可能です。この機能は、生成されるマーカーが変化した、異なるバージョンの Unity からのデータセットを比較する場合に特に便利です。

皆様もぜひお試しください

Profile Analyzer は今後も引き続き、Unity 社内での重要なシステムのパフォーマンスや最適化のモニタリングに使用されます。最近では、大きなテクスチャ―の作成によってレンダースレッドのストールが発生したため、本ツールを使用して Unity のテクスチャー読み込みパフォーマンスの調査を行いました。検索とフィルタリングのおかげで、問題に関連するキーメトリックに的を絞った分析が、従来より簡単に行えました。このようなパフォーマンスの調査・改善を開発者の皆様にもより簡単に行っていただけるように、本ツールを Unity 2019.1 のリリースと同時にパッケージとして公開しましたので、ぜひお試しください。皆様のご意見・ご感想をフォーラムまでお気軽にお寄せください。

2019年5月13日 カテゴリ: テクノロジー | 3 分 で読めます
取り上げているトピック