ジャンプ先: 概要. 戻り値. キーワード. 関連項目. フラグ. MEL 例.

概要

dgtimer [-combineType] [-hide string] [-hierarchy] [-maxDisplay int] [-name string] [-noHeader] [-outputFile string] [-overhead boolean] [-rangeLower float] [-rangeUpper float] [-reset] [-returnCode string] [-returnType string] [-show string] [-sortMetric string] [-sortType string] [-threshold float] [-timerOff] [-timerOn] [-trace boolean] [-type string] [-uniqueName] [-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; を指定する度に)リセットされます。レポートされるグローバル値を以下に示します。 SECTION 2:
dgtimer -query 出力のセクション 2 は、ノード単位の情報を含みます。各列の項目内容を記述するヘッダー、次に実際のノードごとのデータ、そして最後に列ごとの合計を記したフッターと続きます。フッターに含まれるデータは各メトリックのグローバル合計で、最後にリセットしてから削除されたノードも含みます。そのため、フッターに表示される値が列の個々の値の合計より大きくなる場合があります。ヘッダーとフッターを表示しないようにするには、-noHeader フラグを使用してノード単位のデータのみを表示します。次の列が表示されます。 SECTION 3:
dgtimer -query 出力のセクション 3 には、コールバックにかかった時間を表示します。セクション 3 は、CALLBACK メトリックが表示されている場合のみ表示されます(-show フラグを参照)。SECTION 3.1 の最初の部分に、次の構成する各エントリとともに、コールバックごとの時間をリストします。 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 のエントリは次のように表示されます。 3 番目の部分は SECTION 3.3 で、ノード単位にコールバックごとにデータをリストします。ノードは -sortType フラグに基づいてソートされ、各ノードに対して同様に -sortType フラグに基づいてソートされたコールバックがリストされます。このリストは長くなる場合があるため、ゼロのエントリは表示しません。SECTION 3.3 での重要な注意点は、まだ存在しているノードのみが表示されるということです。ノードが削除されている場合は、情報はリストされません。

戻り値

float デフォルトは、すべてのノードの self 計算時間の合計です。-returnType、-sortMetric、および -sortType フラグにより変更できます。

戻り値の型は照会モードでは照会フラグが基になります。

キーワード

dependency, graph, optimize, performance

関連項目

timerX

フラグ

combineType, hide, hierarchy, maxDisplay, name, noHeader, outputFile, overhead, rangeLower, rangeUpper, reset, returnCode, returnType, show, sortMetric, sortType, threshold, timerOff, timerOn, trace, type, uniqueName, updateHeatMap
ロング ネーム(ショート ネーム) 引数型 プロパティ
-combineType(-ct) query
animCurveTA など、同タイプのすべてのノードが、出力ディスプレイで結合されます。
-hierarchy(-h) createquery
ディペンデンシー グラフの階層が作用されるように指定することができます。「-reset -hierarchy -name ball」とすれば、「ball」という名前のノードと、ディペンデンシー グラフにあるすべての子孫のタイマーがリセットされます。
-uniqueName(-un) createquery
出力にリストされる DAG ノードを固有の名前でリストするように指定することができます。ノード名の代わりに、オブジェクトへの DAG のフル パスを出力します。
-maxDisplay(-m) int query
処理コストが最も高い「n」エントリのみを出力ディスプレイに出力するように、ディスプレイを切り捨てます。
-name(-n) string createquery
-reset や -query と一緒に使用し、タイマー値をリセットまたは出力するノード名を指定します。単一のタイマーを照会する場合は、一列のみ出力します(すなわち、グローバル タイマーとヘッダーは省略されます)。「-outputFile MEL」オプションを使用して、出力をスクリプト エディタ(Script Editor)ウィンドウに強制し、MEL スクリプトで値を簡単に取得できます。注: -name フラグと -type フラグを一緒に使用することはできません。
-noHeader(-nh) createquery
-query フラグと一緒に使用し、ヘッダー情報やフッター情報の出力を防止します。ノード単位のタイミング データのみが出力されます。 このオプションは、-outputFile オプションでディスク上のファイルに照会結果を出力する場合など、出力の解析をを容易にします。
-show(-sh) string createquerymultiuse
-query フラグと一緒に使用し、出力のノード単位のセクションに表示される列を指定します。-show には次の引数を使用できます。 「all」(すべての列を出力)、 「callback」(評価ではなくノードのコールバック処理にかかる時間を表示)、 「compute」(ノードの計算にかかる時間を表示)、 「dirty」(ノードの代わりにダーティの伝播にかかる時間を表示)、 「draw」(ノードの描画にかかる時間を表示)、 「compcb」(計算のためにノードのコールバック処理にかかる時間を表示)、 「compncb」(計算以外のためにノードのコールバック処理にかかる時間を表示) -show フラグは複数回使用できますが、-hide を使用して指定することはできません。デフォルトでは、-show、-hide、または -sort を指定した場合の有効な表示モードは、 「dgtimer -show compute -query」です。
-hide(-hi) string createquerymultiuse
このフラグは -show の反対です。-show と同様に、何度でも指定できる照会専用のフラグです。-hide を指定すると、-hide フラグでリストした列以外のすべての列が表示されます。
-overhead(-oh) boolean createquery
タイミング オーバーヘッドの計測をオン/オフにします。通常の環境では、タイミング オーバーヘッドの合計は計測されるイベントより小さいですが、複雑なシーンでは、計測可能なオーバーヘッドが見つかることがあります。デフォルトでは、このオプションはオフです。有効にするには、タイミングの開始前に「dgtimer -overhead true」を指定します。タイミングを照会すると、dgtimer 出力の SECTION 1.2 にオーバーヘッドがレポートされます。個々の操作には分けられません。
-sortMetric(-sm) string createquery
-query フラグと一緒に使用し、出力のノード単位のセクションを生成する場合にどのメトリックでソートするかを指定します(例:「draw」時間)。 -sortType フラグを指定して、どのタイマーでソートするか定義することもできます。たとえば、「dgtimer -sortMetric draw -sortType count -query」は、各ノードを描画した回数によって出力をソートします。-sortMetric と -sortType はどちらもオプションで、どちらか 1 つのみ指定することもできます。-sortMetric フラグは 1 回しか指定できません。このフラグは次の引数をとります。 「callback」(ノードのコールバック処理中にかかる時間でソート)、 「compute」(ノードの計算にかかる時間でソート)、 「dirty」(ノードの代わりのダーティの伝播にかかる時間でソート)、 「draw」(ノードの描画にかかる時間でソート)、 「fetch」(データをデータ ブロックからコピーするのにかかる時間でソート)。 -sortMetric を省略すると、デフォルトとして最初に表示された列でソートします。 sortMetric は、-show および -hide フラグによる列の表示/非表示には依存しません。非表示の列でソートすることも可能です。-sortMetric および -sortType で選択した列が、MEL コマンド行の dgtimer コマンドで返される合計列になります。このフラグは、-updateHeatMap と一緒に使用してヒートマップを構築するメトリックを指定することもできます。
-sortType(-st) string createquery
-query フラグと一緒に使用して、出力のノード単位のセクションを生成するときに、どのタイマーでソートするかを指定します(例: 「self」時間)。-sortMetric フラグを指定して、どのメトリックでソートするか定義することもできます。たとえば、「dgtimer -sortMetric draw -sortType count -query」は、各ノードを描画した回数によって出力をソートします。-sortMetric と -sortType はどちらもオプションで、どちらか 1 つのみ指定することもできます。-sortType フラグは 1 回しか指定できません。このフラグは次の引数をとります。 「self」(セルフ タイムでソート。これはノードに特定した時間で、その子は含まない)、 「inclusive」(ノードの子を含む時間でソート)、 「count」(ノードが起動された回数でソート)、 「none」(self 時間でソートするが、ノード単位の表示で Percent 列と Cumulative 列は表示しない、またコマンド ラインに Maya のノードの合計数を返す)。 -sortType を省略すると、デフォルトで self 時間でソートされます。 -sortMetric および -sortType で選択した列が、MEL コマンド行の dgtimer コマンドで返される合計列になります。リストの SECTION 1 に表示されるグローバル合計が返されます。例外として、「-sortType none」を使用すると、代わりに Maya のノード数が返されます。 このフラグは、-updateHeatMap と一緒に使用してヒートマップを構築するメトリックを指定することもできます。
-timerOff(-off) createquery
ノード タイマーをオフにします。デフォルトではすべてのノード上のタイマーがオフになりますが、-name フラグか -type フラグで指定した場合は、指定したノード タイマーのみがオフになります。 すべてのノード上のタイマーがオフになると、グローバル タイマーもオフになります。
-timerOn(-on) createquery
ノード タイマーをオンにします。デフォルトではすべてのノード上のタイマーがオンになりますが -name フラグか -type フラグで指定した場合は、指定したノード タイマーのみがオンになります。 このコマンドによってグローバル タイマーもオンになります。 タイマーをオンにしても、タイマーはゼロにリセットされません。タイマーをリセットするには、-reset フラグを使用します。タイマーがリセットされない理由は、タイミングを任意でオンとオフに切り替えて、既存のタイマー値に追加できるようにするためです。
-returnCode(-rc) string createquery
このフラグは、より一般的な -returnType フラグに置き換えられました。 -returnCode フラグは計算メトリックにしか使用できなかったためです。 これは下位互換性のためだけに残してあります。 今後のリリースでは削除される予定です。 次に便利な比較表を示します。ノードの合計数を取得するには:
古い方法: dgtimer -rc nodecount -q;
// Result:325//
新しい方法: dgtimer -returnType total -sortType none -q;
// Result:325//
古い方法: dgtimer -rc count -q;
// Result:1270//
count 計算列の合計を取得するには:
新しい方法: dgtimer -returnType total -sortMetric compute -sortType count -q;
// Result:1270//
古い方法: dgtimer -rc selftime -q;
// Result:0.112898//
self 計算列の合計を取得するには:
新しい方法: dgtimer -returnType total -sortMetric compute -sortType self -q;
// Result:0.112898//
-returnType(-rt) string query
このフラグは、dgtimer コマンドが返す double 値が何を表すかを指定します。 デフォルトでは、SECTION 1 に表示される、ノード単位の出力のソート列のグローバル合計が返されます(ソート列は -sortMetric および -sortType フラグで指定できます)。ただし、合計の代わりに列の個々のエントリを返すように指定することもできます。このフラグは、おもに出力を強制せずに照会で使用するのに役立ちます。フラグに値「total」を指定すると列の合計のみが表示され、「all」を指定すると個々のエントリがすべて表示されます。 たとえば、描画の self 時間の合計以外は何も出力したくない場合には、単純に次のように指定します。
dgtimer -returnType total -sortMetric draw -sortType self -threshold 100 -noHeader -query;
// Result: 7718.01 // 反対に個々のエントリを取得するには、上記のクエリを次のように変更します。
dgtimer -returnType all -sortMetric draw -sortType self -threshold 100 -noHeader -query;
// Result: 6576.01 21.91 11.17 1108.92 // 特定のノードの子を含めたダーティ時間を取得するには、-returnType all と -name を一緒に使用します。
dgtimer -name "virginia" -returnType all -sortMetric dirty -sortType inclusive -threshold 100 -noHeader -query;
注: ノードの合計数を取得するには、「-sortType none -returnType total」を使用します。各ノードのオン/オフ状態を取得するには、「-sortType none -returnType all」を使用します。
-outputFile(-o) string query
タイミングまたはトレースの出力を表示する場所を指定します。このフラグは文字列引数を取ります。 引数として有効な値は以下の3つです。
  1. ディスク上のファイル名。
  2. キーワード「stdout」。この場合、出力結果はターミナル ウィンドウ(Linux と Macintosh)またはステータス ウィンドウ(Windows)に表示されます。
  3. キーワード「MEL」。この場合、出力結果は Maya のスクリプト エディタ(-query でのみサポート)に表示されます。
「stdout」がデフォルトの動作です。 このフラグは -query フラグや -trace フラグと一緒に使用できます。-trace フラグと一緒に使用した場合、すべてのトレース結果は -outputFile(または -outputFile を省略した場合はstdout)で指定した出力先に表示されます。トレース操作の結果は、 再度 -trace フラグと -outputFile フラグを指定するまでは引き続きこの出力先に出力されます。 -query フラグと一緒に使用した場合、タイミングの出力結果は -outputFile(または -outputFile を省略した場合は「stdout」)で指定した出力先に出力されます。 以下にフラグ -query、-trace、-outputFile の使用例をいくつか挙げます。 例: タイミング情報をディスク上の単一のファイルに出力:
dgtimer -on;                                       // タイミングをオンにします。
アニメート化したシーン コンテンツをいくつか作成します;
play -wait;                                        // シーンを以下で再生します。
dgtimer -query -outputFile "/tmp/timing.txt"       // ノードのタイミング情報をディスク上のファイルに出力します。
例: トレース情報をディスク上の単一のファイルに出力:
dgtimer -on;                                       // タイミングをオンにします。
アニメート化したシーン コンテンツをいくつか作成します;
dgtimer -trace on -outputFile "/tmp/trace.txt"     // トレースをオンにして結果をファイルに出力します。
play -wait;                                        // シーンを再生します。トレース情報を /tmp/trace.txt に出力します。
dgtimer -query;                                    // しかし、タイミング情報はターミナル ウィンドウに出力します。
play -wait;                                        // シーンを再度再生し、トレース情報を /tmp/trace.txt に出力します。
例: 2 つの実行結果のトレース情報とタイミング情報を別個のファイルに出力:
dgtimer -on;                                       // タイミングをオンにします。
アニメート化したシーン コンテンツをいくつか作成します;
dgtimer -trace on -outputFile "/tmp/trace1.txt"    // トレースをオンにして結果をファイルに出力します。
play -wait;                                        // シーンを再生します。
dgtimer -query -outputFile "/tmp/query1.txt"       // ノードのタイミング情報を別のファイルに出力します。
dgtimer -reset;
dgtimer -trace on -outputFile "/tmp/trace2.txt"    // トレース結果を別のファイルに出力します。
play -wait;                                        // シーンを再生します。
dgtimer -query -outputFile "/tmp/query2.txt"       // ノードのタイミング情報を別のファイルに出力します。
ヒントとコツ:
  • タイミングの結果をスクリプト エディタに出力すると、その結果を MEL で 利用しやすくなります。例: string $timing[] = `dgtimer -query -outputFile MEL`
  • -outputFile を -trace と一緒に指定した場合、-query で指定したものとはまったく 関係なくなることに注意してください。
  • 指定したファイルがすでに存在する場合、データを出力する前にまずそのファイルが 削除されます(そのファイルが書き込み不可の場合、代わってエラーが発生します)。

このフラグは照会モードでは値が必要になります。

-reset(-r) create
ノード タイマーをゼロにリセットします。デフォルトでは、グローバル タイマーだけでなく全ノードのタイマーがリセットされますが、-name フラグや -type フラグで指定した場合、指定したノードのタイマーのみがリセットされます。
-threshold(-th) float query
値がしきい値より小さくなると、表示を切り捨てます。しきい値はソートに使用するすべてのタイマーに適用されます。たとえば、ソート キーが self 計算時間(つまり、-sortMetric が「compute」で -sortType が「self」)で、しきい値のパラメータが 20.0 の場合、計算結果の self 時間が 20.0 以上のノードのみ表示します。(-threshold は絶対時間を使用することに注意してください。これと似た -rangeUpper および -rangeLower パラメータは、パーセンテージを使用して範囲を指定します)。
-trace(-tr) boolean create
トレーシングの詳細設定のオンオフを切り替えます。 デフォルトでは、トレーシングはオフです。有効にすると、時間を記録できる各操作の開始時と終了時にログが記録されます。このフラグは -outputFile と一緒に使用して、出力結果の生成先を指定することが できます。 次に出力のフォーマット例を示します。
dgtimer:begin: compute 3 particleShape1Deformed particleShape1Deformed.lastPosition
上記は、操作の開始を記録する -trace が true の場合の出力例です。各フィールドの詳細を次に示します。「dgtimer:begin:」文字列は、これが操作記録の開始であることを示す識別マーカです。例中の 2 番目の引数「compute」は、操作のメトリックです。「dgtimer -q」に -show フラグを指定すると、指定した各メトリックの出力を表示できます。後に続く整数(この例では 3)は操作スタックの深さで、3 番目の引数はノードの名前です(particleShape1Deformed)。4 番目の引数はメトリックによって異なります。「compute」では、計算するプラグ名を指定します。「callback」では、Maya の内部的なコールバック名です。「dirty」では、ダーティの伝播元のプラグ名です。
dgtimer:end: compute 3 particleShape1Deformed 0.000305685 0.000305685
上記は操作の終了の記録です。「compute」、「3」、「particleShapeDeformed」引数については、上述の「dgtimer:begin」の概要で説明しました。2 つの浮動小数点の引数は、秒単位で計測された操作の self 時間と inclusive 時間です。inclusive 計測では合計時間をリストします。これはこの操作の「dgtimer:begin:」エントリと一致します。一方、self 計測は inclusive 時間からカレント操作の実行中に発生した子の操作によって消費された時間を引いた時間をリストします。 このマニュアルの別の場所で注記したように、この 2 つの時間は「実経過時間」で、Maya がアイドル状態かシステム コールを実行中かに関係なく、すべての時間を含めた経過時間を計測します。dgtimer は、グローバル メッセージ コールバックなど、Maya のノード以外の精度も計測できるので、このような場合は通常ノード名が表示される場所に「-」を表示します。「-」は「適用不可」を意味します。
-type(-t) string createquery
-reset フラグや -query フラグと一緒に使用して、タイマー値をリセットまたは出力するノード タイプ(animCurveTA など)を指定します。 照会時には、-combineType フラグを使用すると同じタイプの全ノードが 1 つのエントリに統合され、一列のみを出力します(すなわち、グローバル タイマーやヘッダーは省略されます)。 注: -name フラグと -type フラグを一緒に使用することはできません。
-updateHeatMap(-uhm) int create
指定したパラメータに基づいて Maya のヒート マップを再構築するよう強制します。 ヒート マップは内部の dgtimer 構造で、ハイパーグラフ(Hyper Graph)エディタで表示中に、強度値をカラーマップ エントリにマッピングするのに使用します。ヒート マップ表示モードを使用するすべてのエディタが 1 つのヒート マップを共有します。ヒート マップを更新すると、すべてのノード上のタイマー値が分析され、ヒート マップのエントリが均等に分配されます。 パラメータはマップの分割数(整数)で、これはヒート マップの表示に使用可能なカラー数と同じにする必要があります。このフラグを -rangeLower および -rangeUpper フラグと一緒に使用して、表示可能な範囲が指定した比率の範囲内に収まるように制限できます。dgtimer コマンドは、指定したメトリックとタイプに対して、Maya のすべてのノードの最大タイミング値を返します。注: 表示範囲に 0 が含まれる場合は、ヒート マップ内の特殊な 0 番目(正確にゼロ)のスロットを使用できます。
-rangeLower(-rgl) float create
このフラグは、照会で表示するノードの範囲を制限したり、-updateHeatMap と一緒に使用してヒート マップを制限したりするのに使用します。この値は処理されるノードの下限のパーセンテージです。範囲の下限を設定する -rangeLower フラグもあります。デフォルト値は 0 で、範囲の上限より下のタイミング値を持つすべてのノードが対象になります。
-rangeUpper(-rgu) float create
このフラグは、照会で表示するノードの範囲を制限したり、-updateHeatMap と一緒に使用してヒート マップを制限したりするのに使用します。この値は処理されるノードの上限のパーセンテージです。範囲の下限を設定する -rangeLower フラグもあります。デフォルト値は 100 で、範囲の下限より上のタイミング値を持つすべてのノードが対象になります。

: コマンドの作成モードで使用可能なフラグ : コマンドの編集モードで使用可能なフラグ
: コマンドの照会モードで使用可能なフラグ : 1 つのコマンドで複数回使用可能なフラグ

MEL 例

// Turns on node timing and resets the timers.
dgtimer -on;
// Turns off node timing. Note that this does not reset the
// timers.
dgtimer -off;
// Prints the current timer values to the default (stdout).
dgtimer -query;
// To reset the timers:
dgtimer -reset;
// 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.
dgtimer -on -reset;
play -wait;
dgtimer -off;
dgtimer -outputFile "/home/virginia/timing/dgtrace_once.txt" -query;
dgtimer -on;
play -wait;
dgtimer -off;
dgtimer -outputFile "/home/virginia/timing/dgtrace_twice.txt" -query;
// To display the draw and dirty metrics, and sort by inclusive
// draw time.
dgtimer -show draw -show dirty -sortMetric draw -sortType inclusive -query;
// To display the dirty metric, and not show the sort columns (i.e.
// percent and cumulative). Note that "-sortType none" internally assumes
// self time, and since we don't give a sortMetric, it uses the -show
// column. Net effect is sorting on dirty self time.
dgtimer -show dirty -sortType none -query;