コンピュータプログラミングにおいて、インストルメンテーションとは、ソフトウェアを解析できるように修正する行為である。 [1]
一般的に、インストルメンテーションはソースコードまたはバイナリコードのいずれかを変更します。JVMなどの実行環境は、プログラム実行にインストルメンテーションを追加するための個別のインターフェースを提供します。例えば、プログラム起動時にインストルメンテーションを可能にするJVMTIなどが挙げられます。
インストルメンテーションによりプロファイリングが可能になります。[2]テスト実行中の動的な動作を測定することで、パフォーマンスやエイリアス解析など、静的には十分な精度で解析 できないプログラムの特性を解析するのに役立ちます。
計測機器には次のものが含まれます。
インストルメンテーションは実行カバレッジによって制限されます。プログラムが特定の実行ポイントに到達しない場合、そのポイントのインストルメンテーションはデータを収集しません。例えば、ワードプロセッサアプリケーションをインストルメントしたとしても、ユーザーが印刷機能を起動しなかった場合、インストルメンテーションは印刷機能でのみ使用されるルーチンについて何も記録できません。
インストルメンテーションはプログラムの実行時間を増加させます。状況によっては、この増加が劇的になる場合があり、デバッグ用途へのインストルメンテーションの適用が制限される可能性があります。インストルメンテーションのオーバーヘッドは、使用するインストルメンテーション技術によって異なります。[4]