The MicroProfiler is an optimization tool available in Roblox Studio and the Roblox client that provides detailed timing information for タスクスケジュール タスク名付きの タグ です。
- 一般的なタスクのリストについては、タグ参照 を参照してください。
- For a step-by-step example of using the MicroProfiler to identify a performance issue, see the マイクロプロファイラーのウォークスルー .
MicroProfiler の基本
MicroProfiler を開くには、Studio またはクライアントで Ctrl Alt F6 ( ⌘ 1> ⌥1> 3> F6 3> ) を押します。また、クライアントの設定メニューを使用することもできます。
開いた状態で、3D ビューポートのトップにメニューバーが表示されます。デフォルトモードでは、移動バーグラフィックはタスクスケジューラの各フレームにかかる時間を表示します。
バーは通常、グラフの中央にあるべきですが、突然のスパイク(速度の高い増加)を見る可能性があります。スパイクは、通常、ワークロードの増加により、いくつかのタスクを実行するのによってより多くの時間がかかることを示します。たとえば、多くの動くパーツを作成するには、物理シミュレーション
フレームのレコードを一時停止するには、CtrlP (⌘P) を押すか、メニューバーで2>一時停止2>をクリックします。一時停止中は、グラフィックをクリックまたはドラッグすることでフレームをナビゲートできます。
For a full summary of the various views and how to navigate the MicroProfiler interface, see マイクロプロファイラーモード .
スレッド
多くのプログラムと同様に、Roblox は複数のスレッドを使用して、複数のタスクを同時に実行します。在マイクロプロファイラー詳細モードでは、左側に各スレッドのラベルが表示されます。
主要な 3つのスレッドタイプがあります:
メイン/レンダリング : 不正解であるかもしれませんが、CPU で実行されます。入力を処理し、Humanoids 、アニメーション/トリーン、物理的所有、サウンド、および待機スクリプトを再開します。また、Studio インターフェースを更新し、他のスレッドをコーデンスします。
ワーカー ("RBX ワーカー") は、ネットワーク、物理、およびパスファインドに関するメインスレッドを助けます。現代のCPUsのコア数により、多くのワーカースレッドを持つ可能性があります。
レンダリング (「GPU」):「準備、実行、プレゼント」ロジックをフォローします。デバイスのグラフィック処理ユニット(「GPU」)と通信します。
- 準備: メインスレッドからの情報は、レンダリングモデルを更新するために使用されます。
- 実行: 2D インターフェイスを含むレンダリングコマンドを実行します。
- プレゼント:GPU とシンクロされます。
カスタムプロフィーリング
スクリプトが複雑なタスクを実行している場合は、コードのクリティカルな部分をプロファイルして、遅れがあることを確認できます。コードを debug.profilebegin() および debug.profileend() にラップして、その間のすべての関数コールを時間内に確認し、マイクロプロフィーラーのタイム
HardWorkScript
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)
エクスペリエンスを実行し、マイクロプロフィーラーを一時停止すると、カスタムラベルは gameStepped ラベルの下に表示されます。
時間軸の役割に対する期間から、関数が他のオペレーションに比べて多くの処理時間を使用していることがわかります。
フレームデータを保存する
フレームデータのセットを後でレビューする (または、他の人と共有する) ために保存したい場合は、 ダンプ メニューを使用します。エンジンは、Roblox ログダイレクトリ内のフレームデータを microprofile-<date>-<time>.html に保存します。
- Windows では、%LOCALAPPDATA%\Roblox\logs をチェックします。
- On macOS、Check ~/Library/Logs/Roblox 。
これらの HTML ファイルは、モバイルデバイスのライブ接続と サーバーダンプ の両方に使用されています。
モバイルデバイスでプロフィール作成
モバイルクライアントから MicroProfiler にアクセスするには、デバイスが開発機器と同じ ネットワーク に接続されている必要があります。
モバイルデバイスの 設定 メニューにあるマイクロプロフィーラーを有効にします。有効にすると、メニューに IP アドレスとポート番号が表示されます。
たとえば、上のスクリーンショットでは、アドレスは 192.168.1.166 であり、ポートは 1338 です。同じネットワークのコンピュータから、 http://192.168.1.166:1338
サーバーをプロフィールする
標準のクライアントの MicroProfiler に加えて、サーバーのミクロプロファイルを使用して、サーバーのアクティビティのブリーフダンプを取得できます。
編集権限のあるエクスペリエンスでは、CtrlAltF9 を押しながら、開発者コンソールを開きます。
ドロップダウンメニューで MicroProfiler を選択します。
In the サーバープロフィール section, specify the number of フレーム per second (maximum 60) and the number of seconds to profile (maximum 4).
クリックして レコーディングを開始する 。
数秒後、デベロッパーコンソールは、ファイルへのパスを提供しますが、これは 標準のダンプ と同じパスです。
ウェブ UI を使用する
一全般に、MicroProfiler ウェブ UI は 詳細モード と同様に機能しますが、いくつかの追加機能があります:
グループによるフィルターに加えて、スレッドによるフィルターを使用できます。
Use Ctrl F / ⌘ F をジャンプして、ダンプで最も時間がかかるタスクの発生にジャンプします。たとえば、2> computeLightingPerform2> は、128フレームのダンプですべてのフレームで実行
メモリの割り当てに色コードを有効化または無効化するには、 X-Ray メニューを使用します。
- メインバーグラフィック内のライターフレームは、より高いメモリーの割り当てを示しています。
- プレビューバーの軽い部分と、タイムラインの軽いラベルにより、メモリの割り当てが高いフレームの一部が表示されます。
- X線モードでは、C を押してメモリの割り当ての合計サイズを表示し、割り当ての数ではなくなります。
Use the エクスポート menu to export a CPU またはメモリの火炎グラフィック、特殊なビジュアライズ 、 がダンプに含まれるすべてのコールスタックをまとめることで、エクスポート グラフィックを使用して、特に長く実行されるタスクを特定できます。しかし、処理時間が長くなるため、エクスポート
第2つのダンプファイルをウェブ UI にドラッグしてドロップして、差分フレームグラフを生成し、エクスペリエンスのパフォーマンスを時間の経過とともに識別および再発を助けます。 [Combine & Compare] をクリックして、新しい HTML ファイルをエクスポートします。
差し子炎グラフは、より多くの CPU またはメモリを消費するダンプ (左または右) を強調し、より明るい色で差し子炎グラフを表示します。