スクリプトプロファイラー は、デベロッパーコンソール のツールで、実行中のすべてのスクリプトのプロフィールを記録し、カスタムなレコーディングとディスプレイ設定でスクリプトの CPU タイムコストを表示できます。このツールは、Luau関数、メソッドコール、プロパ
プロフィーリングセッションをレコーティングする
レコードする前に、レコード環境を選択する必要があります:
- クライアント (デフォルト) — クライアント側のスクリプトを記録します。LocalScripts とScripts を含む、0> Class.BaseScript.RunContext|RunContext0> を設定して、 3> Enum.RunContext.Client|Client 3> に。
- サーバー — サーバー側のスクリプトを記録します。Scripts を含む、RunContext を設定している 0> Enums.RunContext.Server|Server0> または 3> Enums.RunContext.Leg
次のレコーディングオプションを設定できます:
動作 | オプション | デフォルト | 説明 |
---|---|---|---|
周波数 | 1秒あたり 1,000回 (1KHz)10,000回 (10KHz) | 1KHz | 10 KHz 周波数は、スクリプトプロフィーラーが選択した周波数よりもAPIの呼び出しを実行した回数が多いため、より高精度がありますが、パフォーマンスコストも上昇します。 |
セッションの長さ | 1分5分10分マニュアル | マニュアル | マニュアルオプションは、手動で記録を停止する必要があります。 |
ライブ投票動作 | オフ | オフ | この動作は、プロフィールセッション中にあなたのプロフィールデータを毎秒収集し、更新します。 |
新しいプロフィーリングセッションを記録するには:
開く 開発者コンソール 。
ツールドロップダウンを拡大して スクリプトプロファイラー を選択します。
クライアント-サーバードロップダウンを拡大して、 クライアント または サーバー を選択します。
(オプション) ライブ チェックボックスをチェックして、ライブの投票動作を有効にします。
(オプション) Freq と Time を選択して、デフォルトの値を使用しないで、レコーディングの頻度とセッションの長度を選択します。
クリックして 開始 をクリックしてプロフィールセッションを開始します。如果 [開始時間] を設定すると、スクリプトプロフィーラーは、セッションの残り時間をカウントダウンタイマーで表示します。
クリック 停止 またはレコーディングが終了するまで待機してプロフィールデータを表示する。
プロフィーリングデータを読み込み中
セッションが終了すると、スクリプトプロフィールは、各関数のコストをカウントしたテーブルを生成します。テーブルは、最も時間がかかった関数の呼び出しのコストを示し、最も時間がかかった関数の名前で検索できます。次の 2つのビューを提供します:
- コールグラフィックス (デフォルト): フレームタスクに基づいて機能コールをツリー構造にカテゴライズし、表示します。このビューは、各タスクカテゴリを同じルートのノードとして表示し、機能を拡展すること
- 機能機能 : タスクをカテゴリ化しないで、すべての機能をリストします。
デバッグ用の要件に合わせて、次のディスプレイオプションから選択できます:
名前 | オプション | デフォルト | 説明 |
---|---|---|---|
ユニット | ミリ秒 (ms) パーセンテージ (%) | ミリ秒 | 各 API コールの時間をミリ秒単位またはトータルレコーディングセッションの百分比で表示します。 |
平均 | オフ1-秒1-分5-分10-分 | オフ | 選択した値により、各 API コールの平均時間を計算します。如果セッションの長さがセッションの長さの上限を超えるオプションを選択すると、スクリプトプロファイラーはセッションの長さを計算して平均を計算します。たとえば、5分間のオプションを選択すると、5分間のコードを実行すると、期待される平均値が計算されます。 |
プロフィーリングデータのエクスポート
スクリプトプロファイラーでは、記録されたプロフィールデータをJSON ファイルとしてエクスポートできます。プロフィールセッション後に記録されたデータをエクスポートするには:
スクリプトプロフィーラーウィンドウで、 エクスポート をクリックします。
エクスポートウィンドウで、エクスポートしたいプロフィールセッションを選択します。カスタム名を設定したい場合は、デフォルトのファイル名を変更します。
クリックして エクスポート をクリックしてJSONファイルを保存します。
エクスポートされた JSON ファイルには、次のフィールドが含まれています:
- バージョン : バージョン番号。
- セッション開始時間 : ミリ秒単位のタイムスタンプがセッション開始時間を記録します。
- セッションエンドタイム : ミリ秒単位のタイムスタンプがセッションの終了時間を記録します。
- カテゴリ : フレームワークタスクのカテゴリのアレイを記録したプロフィールセッションです。各エントリには以下が含まれています:
- 名前 : 各フレームタスクカテゴリの名前。
- ノードID : タスクカテゴリのノード (ノード) のユニークな識別子。 は 1 ベースのインデックスに Nodes 配列の 123 番目の要素を取得して、例えば、 NodeId の 123 番目の要素を取得すると、
- ノード : プロフィールセッションに記録されたノードのアレイ。各エントリには以下が含まれています:
- TotalDuration : ノードがマイクロ秒単位の CPU 時間にかかる時間。
- FunctionIds : 機能のユニークな識別子の配列。
- ノード ID : ノード ID の配列。
- 機能機能 : プロフィールセッションに記録された機能のアレイ。
- TotalDuration : 関数がマイクロ秒単位のCPU時間で費用をかける時間。
- 名前 : 機能の名前、あるいはなし。
- ソース : 機能のソース、あるいはなし。
- 行 : 機能の行番号、ありがとう。
- フラグ : 特定の機能実行環境を指すフィールド。現在、次の値を持つことができます:
- 0 : 0番目のビットは、IsNative を表し、ネイティブコードジェネレータの下での実行に対応します。
- 1 : 1ビットは、プラグインの一部として実行される IsPlugin を表します。
エクスポートされたプロフィーリングデータの例
{
"Version":2,
"SessionStartTime":1704850750514,
"SessionEndTime":1704850751198,
"Categories":
[
{"Name":"Parallel Luau","NodeId":4},
{"Name":"Heartbeat","NodeId":1}
],
"Nodes":
[
{"TotalDuration":2530,"FunctionIds":[1],"NodeIds":[2]},
{"TotalDuration":2530,"FunctionIds":[2,5],"NodeIds":[3,7]},
{"TotalDuration":1267},
{"TotalDuration":7746,"FunctionIds":[3],"NodeIds":[5]},
{"TotalDuration":7746,"FunctionIds":[4],"NodeIds":[6]},
{"TotalDuration":7746},
{"TotalDuration":1263,"FunctionIds":[6],"NodeIds":[8]},
{"TotalDuration":1263,"FunctionIds":[7],"NodeIds":[9]},
{"TotalDuration":1263,"FunctionIds":[8],"NodeIds":[10]},
{"TotalDuration":1263}
],
"Functions":
[
{"Name":"main","TotalDuration":2530},
{"Source":"builtin_ManageCollaborators.rbxm.ManageCollaborators.Packages._Index.roblox_rodux-3.0.0.rodux.Store","Line":81,"TotalDuration":1267},
{"Name":"Script","TotalDuration":7746},
{"Source":"Workspace.Actor.Script","Line":1,"TotalDuration":7746},
{"Source":"builtin_DeveloperInspector.rbxm.DeveloperInspector.Packages._Index.DeveloperFramework.DeveloperFramework.UI.Components.Grid","Line":221,"TotalDuration":1263},
{"Source":"builtin_DeveloperInspector.rbxm.DeveloperInspector.Packages._Index.DeveloperFramework.DeveloperFramework.UI.Components.Grid","Name":"_update","Line":236,"TotalDuration":1263},
{"Source":"builtin_DeveloperInspector.rbxm.DeveloperInspector.Packages._Index.DeveloperFramework.DeveloperFramework.UI.Components.Grid","Name":"_getRange","Line":277,"TotalDuration":1263},
{"Source":"[C]","Name":"ScrollingFrame.CanvasPosition","TotalDuration":1263}
]
}