方法 : 行レベルのサンプリング データを収集するHow to: Collect Line-Level Sampling Data

行レベルのサンプリングとは、排他サンプル数が高い関数など、プロセッサ集中型の関数のコードで、プロセッサが大部分の時間を費やす必要のある場所を特定するためのプロファイラーの機能です。Line-level sampling is the ability of the profiler to determine where in the code of a processor-intensive function, such as a function that has high exclusive samples, the processor has to spend most of its time.

概要Overview

行レベルのサンプリングでは、設定された間隔でプログラムのコール スタックを走査し、その結果を集計します。For line-level sampling, the profiler walks the program call stack at set intervals and aggregates those results. これらの結果では、サンプルの取得時にプロセッサが実行していた命令が示されます。These results show what instructions the processor was executing when the samples were taken. 次に、排他サンプルについて収集されたデータが分析され、コード行と命令ポインター (IP) を識別します。The collected data about exclusive samples is then analyzed to identify the lines of code and the instruction pointer (IP).

行レベルのサンプリングは、ネイティブ コードだけでなく、マネージ コードにも使用できます。Line-level sampling works for managed as well as native code. このデータが表示されるパフォーマンス レポートには、行ビューおよびモジュール ビューがあります。Performance reports that display this data include the Lines view and the Modules view.

文字の開始または終了情報は、ネイティブ コードでは使用できません。Character begin/end information is not available for native code. 複数行ステートメントの場合、ネイティブ コードでは、行の開始情報を使用できず、行の終了情報だけを使用できます。For multiline statements, line begin information is not available for native code; only line end information is available.

使用できるデータAvailable Data

使用できる行レベルのサンプリング データには次の情報が含まれます。Available line-level sampling data includes the following information:

  • 関数名。Function name.

  • 関数アドレス。Function address.

  • 行の開始情報: サンプリングされるコードの行番号。Line begin -line number of the sampled code.

  • 行の終了情報: ソースの終了行番号。Line end - ending source line number. これは "行の開始情報" のデータと同じです (1 つのプログラム文が複数のソース コード行にまたがっている場合を除く)。This is generally the same as the "Line begin" data except when a single program statement spans multiple source code lines.

  • 文字の開始情報: 集約サンプルの開始列。Character begin - beginning column of the aggregate sample. 通常、これは 0 です (1 つの行に複数のプログラム文が含まれる場合を除く)。This is generally 0 except when a single line contains multiple program statements.

  • 文字の終了情報: 集約サンプルの終了列。Character end - ending column of the aggregate sample.

  • IP: 集約サンプルが取得されたアドレス (IP ビューのみ)。IP - address where the aggregate sample was taken (IP view only).

    [モジュール] ビューでは、関数に行レベルの統計が含まれている場合、統計は各関数の下に入れ子になっています。In Modules view, if a function has line-level statistics, the statistics are nested under each function. さらに、各行で入れ子になっている IP レベルの統計が表示されます。Additionally, IP-level statistics that are nested under each line are presented.

マネージ コードの行レベルのサンプリングの無効化Turn Off Line-level Sampling for Managed Code

既定では、行レベルのサンプリングは有効になっています。By default, line-level sampling is turned on. マネージ コードの行レベルのデータ収集を無効にするには、次のいずれかを実行します。You can turn off line-level data collection for managed code by doing one of the following:

  • プロファイリングの前に、「VSPerfCLREnv /samplelineoff」と入力します。Before profiling, type VSPerfCLREnv /samplelineoff. これは、アプリケーションとサービスの両方に影響します。This affects both applications and services.

    または— or —

  • アプリケーションの起動時に、「VSPerfCmd /lineoff<他の引数>」を入力します。When starting an application, type VSPerfCmd /lineoff <other arguments>.

参照See Also

パフォーマンス セッションの構成 Configuring Performance Sessions
パフォーマンス ツール データの分析Analyzing Performance Tools Data