マイクロプロファイラ は、Roblox Studio と Roblox クライアントで利用可能なパフォーマンス最適化とトラブルシューティングツールです。詳細なタイミング情報を提供します タスクスケジューラー タスクが呼ばれ、 タグ と呼ばれるタスク。
- 一般的なタスクのリストについては、タグ参照 を参照してください。
- マイクロプロファイラを使用してパフォーマンスの問題を識別する手順の例は、マイクロプロファイラのウォークスルー を参照してください。
マイクロプロファイラーの基本
マイクロプロファイラを開くには、Studio またはクライアントで Ctrl Alt F6 ( ⌘ ⌥ F6 ) を押します。クライアントの設定メニューも使用できます。
開いたとき、3D ビューポートの上部にメニューバーが表示されます。デフォルトモードでは、移動バーグラフがタスクスケジューラの各フレームで使用された時間を表示します。

バーは、グラフの中央付近に一般的にあるべきですが、突然のスパイク(値の急激な増加)を見る可能性があります。スパイクは、通常は作業量の増加により、タスクの実行に時間がかかったことを示します。たとえば、多くの移動部品を作成するには、物理シミュレーションからより多くの作業が必要であり、それは動作と部品の接触を処理するのにさらに時間がかかります。次の画像は、スパイクの例を示しています:

フレームの記録を一時停止するには、Ctrl P (⌘ P)を押すか、メニューバーで 一時停止 をクリックします。一時停止中にタイムラインが表示され、グラフをクリックまたはドラッグしてフレームをナビゲートできます。
さまざまなビューとそのナビゲート方法の完全な概要については、MicroProfiler モード を参照してください。
スレッド
多くのプログラムと同様に、Roblox は複数のスレッドを使用して、同時に複数のタスクのシーケンスを実行します。マイクロプロファイラ 詳細モード では、左側に各スレッドのラベルを見ることができます。

主なスレッドタイプは 3 種類あります:
メイン/レンダリング : 多分直感的ではないが、CPU 上で実行します。プロセス入力、Humanoids、アニメーション/ティーニング、物理所有権、サウンド、待機スクリプトの再開が行われます。また、スタジオインターフェイスを更新し、他のスレッドを調整します。
ワーカー ("RBX ワーカー"): ネットワーク、物理、パスファインドに主スレッドを助けます。現代の CPU のコア数により、多くのワーカースレッドがあり、そのほとんどが特定の時点で睡眠状態にある可能性があります。
レンダリング ("GPU"): "準備、実行、表示" ロジックに従います。デバイスのグラフィック処理ユニット (GPU) と通信します。
- 準備: メインスレッドからの情報は、レンダリングモデルの更新に使用されます。
- 実行: 2D インターフェイスを含む問題レンダリングコマンドを実行
- プレゼント: GPUと同期します。
カスタムプロフィール
スクリプトが複雑なタスクを実行している場合、コードの重要な部分をプロファイルして、時間がかかりすぎていないことを確認できます。ラップコードを debug.profilebegin() と debug.profileend() で時間管理し、それらの機能呼び出しの間で行われたすべてをラベルとしてマイクロプロファイラータイムラインに作成します。
ハードワークスクリプト
debug.profilebegin("Hard Work")-- プロファイルするコードdebug.profileend()

MicroProfiler ラベルに利用可能なメモリの量が制限されています。このメモリが尽きると、カスタムプロファイララベルはタイムラインで意味のある名前として表示されない可能性があります。この問題を避けるために、ラベルを少なく使用します。コードのセクションをプロファイルする必要がなくなった場合は、これらの関数へのコメントアウトまたは削除を行います。
例
以下のコードサンプルは、ダミー関数を RunService.PreSimulation イベントに接続し、すべてのフレームで実行します。これを頻繁に行うことは、可能な限り効率的に実行する必要があるため、この機能はプロファイリングの良い候補です。
local RunService = game:GetService("RunService")
local function onPreSimulation()
debug.profilebegin("Hard Work")
-- 例のハードワーク: 2つの変数を 200,000回交換する
local a, b = 0, 1
for _ = 1, 200000 do
a, b = b, a
end
debug.profileend()
end
RunService.PreSimulation:Connect(onPreSimulation)
エクスペリエンスを実行し、MicroProfiler ( Ctrl P または ⌘ P ) を一時停止すると、カスタムラベルが gameStepped ラベルの下に表示されます。

タイムライン上の期間から、機能が他の操作に比べて多くの処理時間を使用していることがわかります。
フレームデータを保存
将来のレビューのためにフレームデータのセットを保存したい (または他の誰かと共有したい)場合は、 ダンプ メニューを使用してください。エンジンは、フレームデータを Roblox ログディレクトリの microprofile-<date>-<time>.html というファイルに保存します。
Windows では、%LOCALAPPDATA%\Roblox\logs をチェックします。
Universal Windows Platform (UWP) アプリを使用する場合は、\Users\<username>\AppData\Local\Packages\ROBLOXCORPORATION.ROBLOX_<hash>\LocalState\logs\ をチェックします。
On macOS, check ~/Library/Logs/Roblox 。
これらの HTML ファイルは、ウェブベースの UI と、モバイルデバイスのライブ接続 および サーバーダンプ と同じを使用します。
プロフィールモバイルデバイス
モバイルクライアントからマイクロプロファイラにアクセスするには、モバイルデバイスが開発マシンと同じ ネットワーク に接続されている必要があります。
モバイルデバイスの 設定 メニューでマイクロプロファイラを有効にします。有効にすると、メニューに IP アドレスとポート番号が表示されます。

たとえば、上のスクリーンショットでは、アドレスは 192.168.1.166 で、ポートは 1338 です。同じネットワークのコンピュータから、MicroProfiler ユーザーインターフェイスの ウェブベースバージョン に移動します。

サーバーをプロファイルする
標準のクライアント MicroProfiler に加えて、サーバー MicroProfiler を使用して、サーバーのアクティビティの詳細なダンプを取ることができます。
編集権限があるエクスペリエンスで、開発者コンソールを Ctrl Alt F9 で開きます。
ドロップダウンメニューで MicroProfiler を選択します。
[サーバープロファイラ] セクション で、秒ごとのフレーム数 (最大 60) とプロファイルする秒数 (最大 4) を指定します。
ウェブ UI を使用
一全般に、MicroProfiler ウェブ UI は、詳細モード と同様に機能しますが、いくつかの追加機能があります:
グループによるフィルタリングに加えて、スレッドによるフィルタリングが可能です。
使用 Ctrl F / ⌘ F を使用して、ダンプで最も時間がかかるタスクの発生にジャンプします。たとえば、computeLightingPerform はすべてのフレームで実行されます。128フレームのダンプで検索すると、完了に最も長い時間がかかったフレームにジャンプできます。
X-Ray メニューを使用して、メモリ割り当ての色コーディングを有効化/無効化します。
- メインバーグラフ内のライトフレームは、より高いメモリ割り当てを示します。
- プレビューバーの軽い部分とタイムラインの軽いラベルは、メモリ割り当てが高いフレームの部分を示します。
- X線モードでは、C を押して、割り当て数ではなくメモリ割り当ての総サイズを表示します。
エクスポート メニューを使用して、CPU またはメモリフレイムグラフをエクスポートし、ダンプに含まれるすべての呼び出しスタックをまとめ、親子階層を維持し、期間に基づいてサイズを変更します。炎のグラフは、実行に特に長時間かからないタスクを識別するのに特に役立ち、したがって注目しにくくなりますが、処理時間が長くなるため、頻繁に実行されます。
Studio でも、スクリプト (実行時間とメモリ割り当て) のみで炎のグラフを作成できます。ウェブベースの炎上グラフと比較して、Studio のものはトップダウンであり、ボトムアップではなく、劇的に長いキャプチャ時間をサポートします。
2つ目のダンプファイルをウェブ UI にドラッグアンドドロップして、経過時間におけるエクスペリエンスのパフォーマンスの改善点や減退点を特定するのに役立つ差分火炎グラフを生成します。クリック 結合して比較 で新しい HTML ファイルをエクスポートします。
差分火炎グラフは、より多くのCPUまたはメモリを消費するダンプ (左または右) を強調し、より明るい色でより大きな差を示します。