UWA GOT (Online) ユーザー定義Variantsとコードブロック診断のサポート
Blog:https://blog.jp.uwa4d.com/2019/11/12/uwa-got-online-ユ…ntsとコードブロック診断のサポ/
UWA GOTはUWAが提供しているローカルパーフォマンス最適化ツールです。Overview分析モードは開発者が直観的にソースコード内の性能ボトルネックを特定することができます。しかし、普段の性能改善の業務で、よくソースコードを部分的に診断したり、コードのCustom Variablesに対してモニタリングしたり、重要なロジックイベントに対してフィードバックしたりする必要があります。
このため、本ツールでCustom Code BlockとCustom Variablesの機能を提供しました。本機能は開発者が任意のソースコードブロック(C#またはLua)に対して診断や追跡することができるようになったほか、プロジェクトのキーVariablesと重要パラメータに対してモニタリングすることもできます。これにより、開発者が柔軟にソースコードのボトルネックのポジショニング、問題のフィードバックすることができ、データの過去履歴を使用して比較したり、プロジェクトのそれぞれのバージョンリリース時の安全性を確保します。
以下はCustom Code BlockとCustom Variablesの具体例です。
一、Custom Code Block
プロジェクトのコード内、開発チームがUWA API PushSampleと PopSampleを使用して任意のCode Blockに対して切り取ることができます。
プロジェクトが実機でのテスト完了後、すぐUWA GOT Onlineで当該Code Blockの具体的なCPUコストを下図のように確認できます。
テーブルの任意の関数をクリックすれば、当該関数のテストでの具体的CPUコストを確認できます。また、開発者は違うバージョンでの変化も確認できます。随時これらの重要関数の性能トレンドのモニタリングできます。
使い方:
UWAEngineに自定義の関数タグを追加します。UWAEngineはPushSampleとPopSampleに対し、その間のCode BlockのCPUコストを統計します。
UWAEngine.PushSample/PopSample public static void PushSample(string sampleName); public static void PopSample();
パラメータ
sampleName 自定義の関数タグ
例
UWAEngine.PushSample(“MyCode”); // My Beautiful Code UWAEngine.PopSample();
二、Custom Variables
プロジェクトのコード内、会社者がUWA APIのLogValueとAddMarkerを通じて、指定のマーカーと対応の数値を追加することによって、UWA GOT Onlineで追跡とモニタリングができます。現在,本機能は以下の4種類のVariablesのタイプをサポートしております。Int、Float、BoolとVector、詳細は下図参照。
使い方:
UWAEngine.LogValue
public static void LogValue(string valueName, float value); public static void LogValue(string valueName, int value); public static void LogValue(string valueName, bool value); public static void LogValue(string valueName, Vector3 value);
パラメータ
valueName自定義のVariablesのマーカー
value Variablesの値
例
UWAEngine.LogValue(“A Bool”, true); UWAEngine.LogValue(“A Int”, Time.frameCount); UWAEngine.LogValue(“A Float”, Time.deltaTime); UWAEngine.LogValue(“A Float”, new Vector3(1,1,1));
また、指定の関数がコールされた回数をモニタリングするため、AddMarker機能も提供しています。本機能は特にC#とLua間の切り替え状況をモニタリングするにはお勧めです。
AddMarker 使用例:
Public static AddMarker(string marker);
UWA GOTはそれぞれのMarkerがフレームごとのAdd回数を統計します。本インタフェースはLuaが コールしたC# インタフェースの回数を統計します。例えば、SLuaのCode Generatorを修正し,自動的に各Wrap関数に対応のワードを追加します。下図参照:
テスト後、下図のようなコスト統計とフレームごとの統計情報を確認できます。