oracle.jdeveloper.profiler
クラスProfilerAPI

java.lang.Object
  |
  +--oracle.jdeveloper.profiler.ProfilerAPI
    

パブリック・クラスProfilerAPI
java.lang.Objectを拡張

プロファイリング機能のコードレベル・サポートを提供するユーティリティ・クラス

このクラスは、プロファイリングのコード・インスツルメント処理を可能にする一連の静的メソッドを含みます。インスツルメント処理されたコードは、すべてのVMまたはOJVMの全モードで実行されますが、OJVMではプログラムをプロファイリング・モードで実行した場合にのみインスツルメント処理が有効になります。その他の場合は、実装が「透過」になるよう設計されており、インスツルメント処理が適切に実行されるかぎり実行ペナルティが追加されないようになっています。

このクラスは現在、JDeveloperの2つのプロファイリング・モードである、実行プロファイリングおよびイベント・プロファイリングをサポートしています。

実行プロファイラのサンプル使用

実行プロファイリング・モードでは、コードをインスツルメント処理して、プロファイラを開始または停止できます。これによりプログラムの特定領域をプロファイリングできます。「startSampling() stopSampling()」を参照してください。

サンプリング・コード実装の典型的な例を次に示します。
public void foo()
{
  ProfilerAPI.startSampling(); // Starts the sampler
  // execute some code
  ProfilerAPI.stopSampling(); // Stops the sampler
}

サンプリング開始/停止のネストしたコールは許可されています。

イベント・プロファイラのサンプル使用

VMおよび一部のライブラリでイベントが生成される場合でも、有効なイベント・プロファイリングにはコード・インスツルメント処理が必須です。ProfilerAPIクラスによって実行できます。

イベントには、次の属性があります。

ID
イベント・タイプを記述する整数値です。システム全体で一意のIDを提供する責任はユーザーにあります。イベントIDの定義には、static final int CSTXXXを使用することをお薦めします。OJVMでは0から99までのイベントIDが生成されますが、イベントIDの単一性はAPIで強制されていません。
コメント
すべてのイベントに関連付けられる、その他の情報です。瑣末なイベント以外は、このコメントを介して重要な情報を提供するのが得策です。
開始時間および終了時間
高パフォーマンスのタイム・カウンタを使用して自動的に提供されます。
コード位置
VMによって自動的に提供されます。

推奨するイベント・インスツルメント処理は、次のとおりです。:
class foo
{
  private static final int EVENT_ID = 500;
  private static final boolean EVENT_ON =
      ProfilerAPI.isActive && ProfilerAPI.isEventActive(EVENT_ID);
  // some code
  String getInfo(String request)
  {
    int eventHandler = -1; // default value
    if (EVENT_ON)
    {
      eventHandler = ProfilerAPI.startEvent(EVENT_ID, "Getting info for " + request + "\n");
    }
    try
    {
      // some code
      if (simpleRequest)
      {
        if (EVENT_ON)
        { // might be useful for the user
          ProfilerAPI.addComment(eventHandler, " Simple request\n");
        }
        // actual code of the simple request
      }
      else
      {
        if (EVENT_ON)
        { // might be useful for the user
          ProfilerAPI.addComment(eventHandler, " Complex request\n");
        }
        // actual code of the complex request
      }
    }
    catch (Throwable e)
    {
      if (EVENT_ON)
      {
        ProfilerAPI.addComment(eventHandler, " Interrupted with exception " + e);
      }
      throw(e);
    }
    finally
    {
      if (EVENT_ON)
      {
        ProfilerAPI.endEvent(eventHandler, " Result = " + res);
      }
    }
    return res;
  }
  // other methods
}

この実装は複雑に見えますが、あらゆるケースについて処理を試行しています。イベント・プロファイリング以外では、パフォーマンス・ペナルティはほとんどありません。ユーザーのコードで例外がスローされないと判明している場合は、すべての try / catch / finally構造は役に立ちません。1回のみ評価された静的ブールを使用すると、プロファイリングなしの場合にパフォーマンス・ペナルティが最小限になります。このProfilerAPIファンクションを即時に戻すという「トリック」を使用しなくても適切に動作しますが、すべてのメソッド引数はそれより先に評価されてしまっています。


フィールド要約
static boolean isActive
           
 
メソッド要約
static void addComment (int handle, boolean o)
          イベントにコメントを追加します。
static void addComment (int handle, char o)
          イベントにコメントを追加します。
static void addComment (int handle, char[] o)
          イベントにコメントを追加します。
static void addComment (int handle, char[] o, int offset, int count)
          イベントにコメントを追加します。
static void addComment (int handle, double o)
          イベントにコメントを追加します。
static void addComment (int handle, float o)
          イベントにコメントを追加します。
static void addComment (int handle, int o)
          イベントにコメントを追加します。
static void addComment (int handle, long o)
          イベントにコメントを追加します。
static void addComment (int handle, java.lang.Object o)
          イベントにコメントを追加します。
static void addComment (int handle, java.lang.String o)
          イベントにStringコメントを追加します。
static void addStackToComment (int handle)
          コメントに現在のスタックを追加します。
static void clearEventHistory ()
          完了していないもの以外のイベントをすべて消去します。
static void dumpEventHistory ()
          stderrで現在格納されているイベントを印刷します。
static void endEvent (int handle)
          イベントを終了します。
static void endEvent (int handle, java.lang.String comment)
          イベントを終了します。
static boolean isEventActive (int event)
          この特定のイベントIDが、この実行中にアクティブかどうかを確認します。
static void pulseEvent (int event, java.lang.String comment)
          パルス・イベントを作成します。
static int startEvent (int event)
          このイベントに対する追加参照すべてに使用する必要があるハンドルを戻します。
static int startEvent (int event, java.lang.String comment)
          このイベントへの追加参照に必須のハンドルを戻します。
static void startSampling()
          サンプリングを開始します。このコールはstopSampling()とペアにする必要があります。
static void stopSampling()
          サンプリングを停止します。このコールは、startSampling()とペアにする必要があります。
 
クラスjava.lang.Objectから継承したメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールド詳細

isActive

public static boolean isActive    
メソッド詳細

startSampling

public static void startSampling()    
サンプリングを開始します。このコールはstopSampling() とペアにする必要があります。

stopSamplingへの最も外側のコールが実行されるまで、サンプリングはオンになっています。

関連項目:
stopSampling()

stopSampling

public static void stopSampling()    
サンプリングを停止します。このコールは、startSampling()とペアにする必要があります。
関連項目:
startSampling()

startEvent

public static int startEvent(int event,
                             java.lang.String comment)    
このイベントへの追加参照に必要なハンドルを戻します。

このコールはendEventへのコールとペアにする必要があります。

同一IDを持つ複数のイベントは個別に開始および終了できます。

このコール中に、開始時間およびコード位置が評価されます。

コメントString引数はVM内に格納されます。以降のコメントは追加されます。

イベント・プロファイラがアクティブ化されていないか、このイベントがアクティブでない場合、戻り値は-1です。引き続き実行されたイベント機能へのコールはすべて即時に戻されます。このため、ハンドルを-1へ初期化することをお薦めします。

パラメータ:
event - イベントIDです。
comment - コメントです。
戻り値:
イベント・ハンドルです。
関連項目:
endEvent(int), endEvent(int, String)

startEvent

public static int startEvent(int event)    
このイベントへの追加参照に必要なハンドルを戻します。

このコールはendEventへのコールとペアにする必要があります。

同一IDを持つ複数のイベントは個別に開始および終了できます。

このコールはstartEvent(event, null);と同じです。

パラメータ:
event - イベントIDです。
戻り値:
イベント・ハンドルです。
関連項目:
startEvent(int, String), endEvent(int) , endEvent(int, String)

endEvent

public static void endEvent(int handle,
                            java.lang.String comment)    
イベントを終了します。

このコールはstartEventへのコールとペアにする必要があります。ハンドラはstartEventファンクションによって提供されたか、または-1である必要がありました。その他の値は無視され、stderrに警告メッセージが作成されます。

同一IDを持つ複数のイベントは個別に開始および終了できます。

終了時間はこのコール中に評価されます。

コメントString引数は現在のコメントに追加されます。

イベントIDが終了すると、この特定のハンドルを使用して追加のコールは作成できません。endEventは、このイベントを生成する最後のコールにする必要があります。

パラメータ:
handle - イベント・ハンドルです。
comment - コメントです。
関連項目:
endEvent(int), startEvent(int, String), startEvent(int)

endEvent

public static void endEvent(int handle)    
イベントを終了します。

このコールはstartEventへのコールとペアにする必要があります。ハンドラはstartEventファンクションによって提供されたか、または-1である必要がありました。その他の値は無視され、stderrに警告メッセージが作成されます。

同一IDを持つ複数のイベントは個別に開始および終了できます。

endEvent(handle, null);と同じです。終了時間はこのコール中に評価されます。

イベントIDが終了すると、この特定のハンドルを使用して追加のコールは作成できません。endEventは、このイベントを生成する最後のコールにする必要があります。

パラメータ:
handle - イベント・ハンドルです。
comment - コメントです。
関連項目:
endEvent(int, String), startEvent(int, String), startEvent(int)

pulseEvent

public static void pulseEvent(int event,
                              java.lang.String comment)    
パルス・イベントを作成します。

このコール中に位置、開始時間および終了時間を評価します。

このファンクションでは、有効な継続時間を持たないイベントの作成が可能です。

パラメータ:
event - イベントIDです。
comment - コメントです。

isEventActive

public static boolean isEventActive(int event)    
この特定のイベントIDが、この実行中にアクティブかどうかを確認する場合にクリックします。

このファンクションは、余分な負荷を避けるため、この特定の実行でイベントを必要としない場合に使用してください。

パラメータ:
event - イベントIDです。
戻り値:
イベント・ハンドルです。

addComment

public static void addComment(int handle,
                              java.lang.String o)    
イベントにStringコメントを追加します。

ハンドラはstartEventファンクションで提供されたか、または-1である必要がありました。それ以外の値は無視され、警告メッセージがstderrに作成されます。

コメントは現在のコメントの末尾に追加されます。

パラメータ:
handle - イベント・ハンドルです。
Comment - コメントです。
関連項目:
startEvent(int, String), startEvent(int)

addStackToComment

public static void addStackToComment(int handle)    
コメントに現在のスタックを追加します。

ハンドラはstartEventファンクションで提供されたか、または-1である必要がありました。それ以外の値は無視され、警告メッセージがstderrに作成されます。

現在のスタックは現在のコメントの末尾に追加されます。

パラメータ:
handle - イベント・ハンドルです。
Comment - コメントです。
関連項目:
startEvent(int, String), startEvent(int)

clearEventHistory

public static void clearEventHistory()    
完了したイベントをすべて消去します。

dumpEventHistory

public static void dumpEventHistory()    
stderrに現在格納されているイベントを印刷します。

addComment

public static void addComment(int handle,
                              java.lang.Object o)    
イベントにコメントを追加します。

ハンドラはstartEventファンクションで提供されたか、または-1である必要がありました。それ以外の値は無視され、警告メッセージがstderrに作成されます。

コメントは現在のコメントの末尾に追加されます。

addComment(handle, String.valueOf(o))と同じです

パラメータ:
handle - イベント・ハンドルです。
o - コメントです。
関連項目:
startEvent(int, String), startEvent(int)

addComment

public static void addComment(int handle,
                              int o)    
イベントにコメントを追加します。

ハンドラはstartEventファンクションで提供されたか、または-1である必要がありました。それ以外の値は無視され、警告メッセージがstderrに作成されます。

コメントは現在のコメントの末尾に追加されます。

addComment(handle, String.valueOf(o))と同じです

パラメータ:
handle - イベント・ハンドルです。
o - コメントです。
関連項目:
startEvent(int, String), startEvent(int)

addComment

public static void addComment(int handle,
                              char o)    
イベントにコメントを追加します。

ハンドラはstartEventファンクションで提供されたか、または-1である必要がありました。それ以外の値は無視され、警告メッセージがstderrに作成されます。

コメントは現在のコメントの末尾に追加されます。

addComment(handle, String.valueOf(o))と同じです

パラメータ:
handle - イベント・ハンドルです。
o - コメントです。
関連項目:
startEvent(int, String), startEvent(int)

addComment

public static void addComment(int handle,
                              Boolean o)    
イベントにコメントを追加します。

ハンドラはstartEventファンクションで提供されたか、または-1である必要がありました。それ以外の値は無視され、警告メッセージがstderrに作成されます。

コメントは現在のコメントの末尾に追加されます。

addComment(handle, String.valueOf(o))と同じです

パラメータ:
handle - イベント・ハンドルです。
o - コメントです。
関連項目:
startEvent(int, String), startEvent(int)

addComment

public static void addComment(int handle,
                              float o)    
イベントにコメントを追加します。

ハンドラはstartEventファンクションで提供されたか、または-1である必要がありました。それ以外の値は無視され、警告メッセージがstderrに作成されます。

コメントは現在のコメントの末尾に追加されます。

addComment(handle, String.valueOf(o))と同じです

パラメータ:
handle - イベント・ハンドルです。
o - コメントです。
関連項目:
startEvent(int, String), startEvent(int)

addComment

public static void addComment(int handle,
                              double o)    
イベントにコメントを追加します。

ハンドラはstartEventファンクションで提供されたか、または-1である必要がありました。それ以外の値は無視され、警告メッセージがstderrに作成されます。

コメントは現在のコメントの末尾に追加されます。

addComment(handle, String.valueOf(o))と同じです

パラメータ:
handle - イベント・ハンドルです。
o - コメントです。
関連項目:
startEvent(int, String), startEvent(int)

addComment

public static void addComment(int handle,
                              long o)    
イベントにコメントを追加します。

ハンドラはstartEventファンクションで提供されたか、または-1である必要がありました。それ以外の値は無視され、警告メッセージがstderrに作成されます。

コメントは現在のコメントの末尾に追加されます。

addComment(handle, String.valueOf(o))と同じです

パラメータ:
handle - イベント・ハンドルです。
o - コメントです。
関連項目:
startEvent(int, String), startEvent(int)

addComment

public static void addComment(int handle,
                              char[] o)    
イベントにコメントを追加します。

ハンドラはstartEventファンクションで提供されたか、または-1である必要がありました。それ以外の値は無視され、警告メッセージがstderrに作成されます。

コメントは現在のコメントの末尾に追加されます。

addComment(handle, String.valueOf(o))と同じです

パラメータ:
handle - イベント・ハンドルです。
o - コメントです。
関連項目:
startEvent(int, String), startEvent(int)

addComment

public static void addComment(int handle,
                              char[] o,
                              int offset,
                              int count)    
イベントにコメントを追加します。

ハンドラはstartEventファンクションで提供されたか、または-1である必要がありました。それ以外の値は無視され、警告メッセージがstderrに作成されます。

コメントは現在のコメントの末尾に追加されます。

addComment(handle, String.valueOf(o))と同じです

パラメータ:
handle - イベント・ハンドルです。
o - コメントです。
関連項目:
startEvent(int, String), startEvent(int)