ジャンプ先: 概要. 戻り値. キーワード. 関連. フラグ. Python 例.
dgtimer([combineType=boolean], [hide=string], [hierarchy=boolean], [maxDisplay=int], [name=string], [noHeader=boolean], [outputFile=string], [overhead=boolean], [rangeLower=float], [rangeUpper=float], [reset=boolean], [returnCode=string], [returnType=string], [show=string], [sortMetric=string], [sortType=string], [threshold=float], [timerOff=boolean], [timerOn=boolean], [trace=boolean], [type=string], [uniqueName=boolean], [updateHeatMap=int])
注: オブジェクトの名前と引数を表す文字列は、カンマで区切る必要があります。これはシノプシスに示されていません。
dgtimer は、取り消し不可能、照会可能、および編集不可能です。
このコマンドは、ノード単位でタイマーを管理することにより、ディペンデンシー グラフ(DG)ノードのパフォーマンスを計測します。論理的には、各 DG ノードに関連付けられたタイマーがあり、これがプラグ上での各種操作にかかる実時間の合計を記録します。この時間計測は、ノードが起動するエクスプレッションに含まれるエクスプレッションが実行する MEL コマンドのような、操作のためにノードにデータをコピーする損失時間を含みます。また、fileTexture ノードがディスクからイメージ ファイルをロードする場合などの待ち時間も含みます。計算、描画、およびダーティな伝播を含むほぼすべての DG 操作をレポートします。
計測する各種操作を「メトリック」と呼び、タイマーのタイプを「タイマー タイプ」と呼びます。各種メトリックはタイミングがオンであれば必ず計測されますが、-show および -hide フラグで指定した場合のみ照会されます。現時点でサポートしているメトリックを、下記の -show フラグ以下に詳細にリストします。各メトリックで、標準のタイマー タイプ セットを使用できます。これには次の 3 セットがあります。セルフ タイム用の「self」(ノードに限定した時間でノードの子は含まない)、「inclusive」(ノードの子を含む時間)、および「count」(ノード上での指定したメトリックの操作回数)。
dgtimer が使用するタイミングの仕組みは DG 自体に組み込まれているため、すべてのディペンデンシー ノードが計測可能です。OpenMaya API を使ってプラグインを作成する場合、ノード計測のための特別なコードを追加する必要はなく、すべてが透過的に処理されます。
dgtimer コマンドでは、ノード タイマーのオン/オフの切り替え、ゼロ リセット、現在値の表示が可能です。これらの操作は、すべてのノード上でグローバルに実行することも、名前、タイプ、親子関係で定義された特定のノード セットに実行することもできます。タイマー計測はすべて「リアルタイム」(実時間)で計算されるので、「CPU 時間」(プロセッサがコードを実行している時間のみの計測)とは異なります。時間はすべて秒単位で表示されます。
-query フラグを使用してノード上の現在のタイマー値を表示し、
-on フラグを使用してタイミングをオンに切り替え、
-off フラグを使用してタイミングをオフに切り替え、
-reset フラグを使用してタイマーをゼロにリセットします。
タイミング中に計測した値を表示するには、2 つの方法があります。1 つは、計測した情報をレポートできる -query フラグを使用する方法です。もう 1 つは、OpenMaya クラスの MFnDependencyNode で使用できる照会を使用する方法です(詳細は OpenMaya マニュアルを参照)。
次に、-query フラグで生成される出力について説明します。出力は複数のセクションに分割され、次のように表示されます。
SECTION 1:
dgtimer 出力のセクション 1 は、グローバル情報を含みます。このセクションは、-hoHeader フラグで無効にできます。これらの値は、グローバル タイマーがリセットされる度に(dgtimer -reset; を指定する度に)リセットされます。レポートされるグローバル値を以下に示します。
- Total real time: 最後のグローバル タイマー リセット以降の実経過時間の合計。これは、時計で計測する時間と同様の実時間です。user time や sys time とは異なり、マルチプロセッシング システムでは、この値は実時間と常に一致しています。
- Total user time: 最後のグローバル タイマー リセット以降、CPU が Maya の処理に消費した合計時間(システム時間を除く)。
- Total sys time: 最後のグローバル タイマー リセット以降、CPU が Maya に由来するオペレーティング システム コールに消費した合計時間。
- Summary of each metric for all nodes: 計測する各メトリックの self と count の概要
- Real time in callbacks は、「callback」メトリックの self 時間と count をレポートします。
- Real time in compute は、「compute」メトリックの self 時間と count をレポートします。
- Real time in dirty propagation は、「dirty」メトリックの self 時間と count をレポートします。
- Real time in drawing は、「draw」メトリックの self 時間と count をレポートします。
- Real time fetching data from plugs は、「fetch」メトリックの self 時間と count をレポートします。
- Breakdown of select metrics in greater detail: 計測するメトリックの特定の組み合わせのレポートです。
- Real time in compute invoked from callback は、コールバックによって直接的または間接的に起動された計算にかかる self 時間をレポートします。
- Real time in compute not invoked from callback は、コールバックによって直接的または間接的に起動されたのではない計算にかかる self 時間をレポートします。
SECTION 2:
dgtimer -query 出力のセクション 2 は、ノード単位の情報を含みます。各列の項目内容を記述するヘッダー、次に実際のノードごとのデータ、そして最後に列ごとの合計を記したフッターと続きます。フッターに含まれるデータは各メトリックのグローバル合計で、最後にリセットしてから削除されたノードも含みます。そのため、フッターに表示される値が列の個々の値の合計より大きくなる場合があります。ヘッダーとフッターを表示しないようにするには、-noHeader フラグを使用してノード単位のデータのみを表示します。
次の列が表示されます。
- Rank: すべてのノードをソートしたリスト内でのこのノードの順位です。リストは -sortMetric フラグと -sortType フラグの値でソートされます(これらの値を省略すると、既定として self 計算時間でソートされます)。
- ON: ノードのタイマーのオン/オフ状態を示します(dgtimer を使用すると、タイマーのオン/オフをノード単位で切り替えることができます)。
- Per-metric information: メトリックごとに各種の列をレポートします。ヘッダーにはメトリック名が大文字(例: 「DRAW」)で表示されます。各メトリックの標準の列は次のとおりです。
- Self: 操作の実行にかかった実時間の合計(つまり、ストップウォッチで計測した場合の経過時間)。たとえばメトリックが「DRAW」であれば、ノードの描画にかかった時間になります。
- Inclusive: 操作のために起動された子の操作をすべて含めて、操作の実行にかかった実時間の合計(つまり、ストップウォッチで計測した場合の経過時間)。たとえばメトリックが「DRAW」であれば、子の操作をすべて含めてノードの描画にかかった合計時間になります。
- Count: このノード上で行われた操作の回数(つまり、メトリックが「DRAW」であれば、ノード上での描画操作の回数をレポートします)。
- Sort information: ノード単位のすべての dgtimer 情報のソートに使用する列であれば、その後に Percent 列と Cumulative 列を続けて、リスト内の実行時間の合計を表示します。「-sortType none」を付けると、この 2 列は表示されずに自動的に「self」時間でソートされます。
- メトリック単位の列の後には、ノード名とタイプをレポートします。
- Type ノードのタイプ。
- Name ノード名。ノードがファイル参照されていて、ネームスペースが使用されている場合は、そのネームスペースを含めます。-uniqueName フラグを使用して強制的に DAG パスを表示することもできます。
- Plug-in name ノードが OpenMaya プラグインに実装されている場合は、そのプラグインの名前をレポートします。
SECTION 3:
dgtimer -query 出力のセクション 3 には、コールバックにかかった時間を表示します。セクション 3 は、CALLBACK メトリックが表示されている場合のみ表示されます(-show フラグを参照)。
SECTION 3.1 の最初の部分に、次の構成する各エントリとともに、コールバックごとの時間をリストします。
- コールバック名(例: attributeChangedMsg)。これは Maya の内部で使用する名前で、OpenMaya API を介してコールバックを使用できる場合には、コールバックにアクセスする API 名も同様に表示されます。
- 名前は callbackId ごとに分類して表示されます。callbackId は、コールバックに登録された各クライアントに固有の識別番号で、これにより OpenMaya API を介しているなど、ユーザがクライアントを推測できます。SECTION 3.1 と SECTION 3.3 のリストから同じ callbackId 値を探して、相互参照できます。
- Self time (その callbackId タイプ内でかかる実時間で、そのコールバックの処理中に発生する子の操作は含まない)。
- Percent (-sortType フラグを参照)。パーセント値は、そのコールバックに対して合計 100% までリストされます。これはグローバル パーセントではありません。
- Cumulative (-sortType フラグを参照)。
- Inclusive time (子の操作すべてを含めてそのコールバック内でかかった実時間)。
- Count (callbackId が起動された回数)。
- API では、callbackId が OpenMaya API を介して定義された場合は「Y」、Maya 内で内部的に定義された場合は「N」をリストします。
- ノードでは、この callbackId がコネクトしているノード名をリストします。callbackId が複数のノードにコネクトしている場合は、文字列「*multiple*」を出力します。callbackId にコネクトされたノードがない場合、(またはノードを推測しにくいコールバック タイプの場合)、エントリは空白になります。
- callbackId エントリのリストの後に、破線を挟んでコールバックの self、inclusive、および count の値が一行に表示されます。パーセントは、コールバック時間全体に対する比率であることに注意してください。
SECTION 3.1 の最下部には、列単位の合計を出力します。ここに出力される値は、SECTION 2 のリストの最下部に出力される合計と一致します。SECTION 3.1 の値には、最後にリセットしてから削除されたノードも含まれていることに注意してください。リストの生成時には、しきい値のパラメータ(-threshold、-rangeLower、-rangeUpper、および -maxDisplay)が順守されます。行のソートおよび Percent 列と Cumulative 列の表示は、-sortType フラグに従います。リストが長くなる場合があるため、ゼロのエントリは表示しません。
2 番目の部分は SECTION 3.2 で、callbackId ごとにデータをリストします。前記のように、callbackId はコールバックに登録された各クライアントに固有の識別番号で、OpenMaya API を介しているなど、ユーザがクライアントを推測できるようにします。SECTION 3.2 のエントリは次のように表示されます。
- CallbackId コールバックの数値識別子。SECTION 3.1 と SECTION 3.3 のリストから同じ callbackId 値を探して、相互参照できます。
- 各 callbackId に対して、データは次のコールバック単位に分類されます。
- Callback コールバックの名前(例: attributeChangedMsg)。
- SECTION 3.1 に記載する Percent、Cumulative、Inclusive、Count、API、および Node エントリ。
- callbackId に対するコールバック エントリのリストの後に、破線を挟んで総計行を出力します。総計行には、コールバックに対する self、inclusive、count の値をリストします。パーセントは、コールバック時間全体に対する比率であることに注意してください。
3 番目の部分は SECTION 3.3 で、ノード単位にコールバックごとにデータをリストします。ノードは -sortType フラグに基づいてソートされ、各ノードに対して同様に -sortType フラグに基づいてソートされたコールバックがリストされます。このリストは長くなる場合があるため、ゼロのエントリは表示しません。SECTION 3.3 での重要な注意点は、まだ存在しているノードのみが表示されるということです。ノードが削除されている場合は、情報はリストされません。
| float | 既定は、すべてのノードの self 計算時間の合計です。-returnType、-sortMetric、および -sortType フラグにより変更できます。 |
照会モードでは、戻り値のタイプは照会されたフラグに基づきます。
dependency, graph, optimize, performance
dbfootprint, dbtrace, profiler, timerX
combineType, hide, hierarchy, maxDisplay, name, noHeader, outputFile, overhead, rangeLower, rangeUpper, reset, returnCode, returnType, show, sortMetric, sortType, threshold, timerOff, timerOn, trace, type, uniqueName, updateHeatMap
フラグはコマンドの作成モードで表示できます
|
フラグはコマンドの編集モードで表示できます
|
フラグはコマンドの照会モードで表示できます
|
フラグに複数の引数を指定し、タプルまたはリストとして渡すことができます。
|
import maya.cmds as cmds
# Turns on node timing and resets the timers.
cmds.dgtimer( on=True )
# Turns off node timing. Note that this does not reset the
# timers.
cmds.dgtimer( off=True )
# Prints the current timer values to the default (stdout).
cmds.dgtimer( query=True )
# To reset the timers:
cmds.dgtimer( reset=True )
# Turn on node timing and reset the timer values to zero.
# Then, playback the scene, turn off timing and dump to a file.
# Turn on timing without resetting the timers, and repeat.
cmds.dgtimer( on=True, reset=True )
cmds.play( wait=True )
cmds.dgtimer( off=True )
cmds.dgtimer( outputFile='/home/virginia/timing/dgtrace_once.txt', query=True )
cmds.dgtimer( on=True )
cmds.play( wait=True )
cmds.dgtimer( off=True )
cmds.dgtimer( outputFile='/home/virginia/timing/dgtrace_twice.txt', query=True )