スクリプトプロファイラー

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

スクリプトプロファイラー は、デベロッパーコンソール のツールで、実行中のすべてのスクリプトのプロフィールを記録し、カスタムなレコーディングとディスプレイ設定でスクリプトの CPU タイムコストを表示できます。このツールは、Luau関数、メソッドコール、プロパ

プロフィーリングセッションをレコーティングする

レコードする前に、レコード環境を選択する必要があります:

  • クライアント (デフォルト) — クライアント側のスクリプトを記録します。LocalScriptsScripts を含む、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)1KHz10 KHz 周波数は、スクリプトプロフィーラーが選択した周波数よりもAPIの呼び出しを実行した回数が多いため、より高精度がありますが、パフォーマンスコストも上昇します。
セッションの長さ1分5分10分マニュアルマニュアルマニュアルオプションは、手動で記録を停止する必要があります。
ライブ投票動作オフオフこの動作は、プロフィールセッション中にあなたのプロフィールデータを毎秒収集し、更新します。

新しいプロフィーリングセッションを記録するには:

  1. ツールドロップダウンを拡大して スクリプトプロファイラー を選択します。

    Dropdown menu of all Developer Console tools with the ScriptProfiler option highlighted for selection.
  2. クライアント-サーバードロップダウンを拡大して、 クライアント または サーバー を選択します。

    Dropdown menu with Client and Server options for selection.
  3. (オプション) ライブ チェックボックスをチェックして、ライブの投票動作を有効にします。

  4. (オプション) FreqTime を選択して、デフォルトの値を使用しないで、レコーディングの頻度とセッションの長度を選択します。

  5. クリックして 開始 をクリックしてプロフィールセッションを開始します。如果 [開始時間] を設定すると、スクリプトプロフィーラーは、セッションの残り時間をカウントダウンタイマーで表示します。

  6. クリック 停止 またはレコーディングが終了するまで待機してプロフィールデータを表示する。

プロフィーリングデータを読み込み中

セッションが終了すると、スクリプトプロフィールは、各関数のコストをカウントしたテーブルを生成します。テーブルは、最も時間がかかった関数の呼び出しのコストを示し、最も時間がかかった関数の名前で検索できます。次の 2つのビューを提供します:

  • コールグラフィックス (デフォルト): フレームタスクに基づいて機能コールをツリー構造にカテゴライズし、表示します。このビューは、各タスクカテゴリを同じルートのノードとして表示し、機能を拡展すること Example callgraph view of a profiling session.
  • 機能機能 : タスクをカテゴリ化しないで、すべての機能をリストします。 Example functions view of a profiling session.

デバッグ用の要件に合わせて、次のディスプレイオプションから選択できます:

名前オプションデフォルト説明
ユニットミリ秒 (ms) パーセンテージ (%)ミリ秒各 API コールの時間をミリ秒単位またはトータルレコーディングセッションの百分比で表示します。
平均オフ1-秒1-分5-分10-分オフ選択した値により、各 API コールの平均時間を計算します。如果セッションの長さがセッションの長さの上限を超えるオプションを選択すると、スクリプトプロファイラーはセッションの長さを計算して平均を計算します。たとえば、5分間のオプションを選択すると、5分間のコードを実行すると、期待される平均値が計算されます。

プロフィーリングデータのエクスポート

スクリプトプロファイラーでは、記録されたプロフィールデータをJSON ファイルとしてエクスポートできます。プロフィールセッション後に記録されたデータをエクスポートするには:

  1. スクリプトプロフィーラーウィンドウで、 エクスポート をクリックします。

  2. エクスポートウィンドウで、エクスポートしたいプロフィールセッションを選択します。カスタム名を設定したい場合は、デフォルトのファイル名を変更します。

  3. クリックして エクスポート をクリックしてJSONファイルを保存します。

    Example export window.

エクスポートされた 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}
]
}