この記事は Unity Advent Calendar 2025の12日目の記事になります!
はじめに
Armのプロファイリングツールである『Streamline』をインストールし、動くようになるまでのセットアップ、その後の計測についてを書きます。
Streamlineを使用しようと思った経緯ですが、もともとSnapDragonのプロファイリングツールを使用してオーバードローの割合を調べようと思っていました。
こちらのSnapDragonのプロファイリングツールについてのページを見るとSnapshotで『overdraw analysis』という機能があるらしく、これを使ってみたい!と思っていました。
しかし、自分はNothing Phone (2a)というスマホを使っており、これに搭載されているGPUはArm製だったのでStreamlineを使用することにしました。
Unity
プロファイリングするためにまずはUnityを使用してテスト用のデータをビルドします。
Unityの左上のFile > Buid Settingsからメニューを開き以下のように設定します。
①PlatformをAndroidにする
PlatformはAndroidを選択、この時選択しても右に何も項目が出てこない場合はAndroidビルド用のモジュールをインストールします。
これを選択することでAndroid用にゲームをビルドします。
②Developmet Buildを選択する
Developmet Buildを選択します。
これをすることでビルドしたゲームをUnityProfilerや他のプロファイリング機能で解析したりできるようになります。
次にPlayer Settingsから他の項目を設定します。
①アプリ名を設定する
Player項目のProduct Nameにアプリ名を入れます。
②Configurationを設定する
Scripting BackendをIL2CPPにします。
Target ArchitecturesをARM64に設定します。
これで設定項目はすべてなのでBuildボタンを押してビルドします。
ビルドが終わりとログに成功、もしくは失敗が出てきます。
失敗した場合はスクリプトがエラーになっていないか(コンパイルエラーが起きていたり、UnityEditor用のコードがビルドに含まれてしまってエラーになったりなど)を確かめます。
作成できたAPKはAndroidスマホにいれ、スマホのファイルを見るアプリでこのAPKをタップすることでインストールできます。
Streamline
インストール方法
StreamlineはArm Performance Studitoというパフォーマンスを計測するツールがいくつか入ったパッケージの中の1つのツールのため、Arm Performance Studitoを入れることになります。
こちらのページに飛び、使用しているOSに対応したものをダウンロードします。
他にも内包されているツールが気になる方はこちらでArm Performance Studitonにはどのようなツールが入っているのか紹介されています。
- Performance Advisor
- Streamline
- Frame Advisor
- Mali Offline Compiler
- RenderDoc for Arm GPUs
が含まれています。
インストーラー起動後、設定に注意しないといけない項目などは無いため割愛します。
Streamlineを起動してみる
このような画面が出ます。
画面のそれぞれの場所の説明は上記の通りです。
しかし、上記の画像のようにADBというものがない状態だとPCとスマホを接続しても何も起きないです。
ADBとはAndroid Debug Bridgenの略で、これが使える状態にないとStreamlineは使用できません。
ADB(Android Debug Bridge)のインストール方法
ADBが入っているか確認する
まず、使っているPCにADBがインストールされているのか確認します。
コマンドプロンプトを開き(Windowsの場合)adb --helpを入力して打ちます。
その後下記のようにADBのバージョンなどいろいろ文字が出てきたらインストールされている状態です。
Android Debug Bridge version 1.0.41
Version 36.0.0-13206524
Installed as 『インストール場所』
~~いろいろ情報がたくさん書かれている~~
ADBがない場合
上のコマンドを入力して何も出なかった場合はインストールされていない状態です。
そのためインストールします。
ADBはAndroid SDK Platform Toolsというものの中に含まれているのでこれを手に入れます。
こちらから対象OSのものをダウンロードします。
Zipが手に入るので展開し、上記のデータ達をパスに全角文字が含まれない場所に置きます。
その後、これをコマンドプロンプトで使えるように環境変数として登録します。
Windowsの設定を開き、上の検索欄で『環境変数』と検索して『環境変数を編集』するウィンドウを出します。
ユーザー環境変数のPathを選択して編集ボタンを押し、編集します。
ここに新規でplatform-toolsまでのパスを格納します。ここに追加する必要があるため、platform-toolsは全角文字がないパスに保存するのが安全です。
保存後、コマンドプロンプトを開き adb --helpを入力してインストール場所やバージョンについてのログが流れてきたら成功です。
StreamlineにADBを設定する
次に、インストールしたADBをStreamlineから使えるように設定します。
Streamlineの上のメニュー一覧からウィンドウ > 環境設定を開きます。
外部ツールを開き、ADBパスにadb.exeまでのパスを入力します。
設定したらApply And Closeで閉じ、Streamlineを再起動します。
SelectDevice欄にこのようなメッセージが出ていれば成功です。
計測する
ここまで準備したら端末をPCに接続します。
Select Device欄に自分の端末が表示され、Select Application欄にビルドしたUnityアプリが表示されていれば問題ないです。
計測したいアプリを選び、右下のStart Captureボタンを押して開始します。
StartCaptureはスマホのロックがかかっていても自動でゲームが起動します。
この点は注意してください。
計測が中や結果はこのようになります。
正直、取得できる項目が多すぎて自分でも理解できているのは数種類しか無いです…
歯車マークを押すと計測項目のオプションが開きます。
折れ線グラフを棒グラフに変更したり、グラフの色を変更したり、このグラフを出すための計算式を変更したりできます。
式の欄に$~~を入力する、またはCtrl+Spaceで予測変換が出てきます。
ただし、Ctrl+Zなどでこの欄を戻せなかったので注意してください。
オーバードローの計測
試しにオーバードローの計測を行います。
半透明の板を10枚並べ、その状態を計測しました。
オーバードローはMali Overdrawの項目で確認することができます。
公式のドキュメントによれば
Mali Overdraw チャートには、出力ピクセルごとにシェーディングされたフラグメントの数が表示されます。理想的には、この数は 3 未満にする必要があります。
とあり、3未満にするのが良いそうです。
($MaliShaderWarpsFragmentWarps * 16) / ($MaliGPUTasksFragmentTasks * 1024)
1.63Threadsという結果やグラフは上の計算式によって計算されていますが、これが本当に半透明の重なりの時の回数を数えてくれているのかわからなかったです。
そのため、不透明を重ねた状態も作って検証します。
不透明を重ねたときの結果は1.28threadsという結果になりました。
そのため、Streamlineで計測されるOverdrawの項目はしっかりと半透明の時の重なりについて計測が行えていそうです。
さいごに
今回はArmのプロファイリングツールの『Streamline』を使ってみました。
Unityよりも詳しくいろいろな数値を見ることができ、とても便利そうだと思いました。
まだ、どの数値がどういったことを調べるのに使えるのかわかっていないことが多いですが少しづつ使ってみようと思います。























