Content deleted Content added
mNo edit summary |
removed repeated text |
||
(8 intermediate revisions by 8 users not shown) | |||
Line 1:
{{Short description|Modification of software to allow for analysis}}
{{more footnotes|date=December 2013}}
In [[computer programming]], '''instrumentation''' is the act of modifying software so that [[analysis]] can be performed on it.<ref>A. Sabetta and H. Koziolek, “Measuring Performance Metrics: Techniques and Tools,” in Dependability metrics. Springer, 2008, pp. 226–232.</ref>
In the context of [[computer programming]], '''instrumentation''' refers to the measure of a product's performance, in order to diagnose errors and to write [[Tracing (software)|trace]] information.<ref>[http://pic.dhe.ibm.com/infocenter/rtrthelp/v8r0m0/index.jsp?topic=%2Fcom.ibm.rational.testrt.doc%2Ftopics%2Fcinstruovw.html Source Code Instrumentation Overview at IBM website]</ref> Instrumentation can be of two types: source instrumentation and binary instrumentation.▼
Generally, instrumentation either modifies [[source code]] or [[binary code]]. Execution environments like the JVM provide separate interfaces to add instrumentation to program executions, such as the [[Java_Virtual_Machine_Tools_Interface|JVMTI]], which enables instrumentation during program start.
In programming, instrumentation means:<ref>{{cite web|url=http://www.drdobbs.com/architecture-and-design/commenting-testing-and-instrumenting-cod/229300224|title=Commenting, Testing, and Instrumenting Code|date=January 3, 2011|accessdate=January 29, 2014}}</ref>▼
▲
Instrumentation can include:
▲
* Measuring and logging the duration of operations
== Limitations ==
Instrumentation is limited by execution coverage.
Instrumentation increases the execution time of a program. In some contexts, this increase might be dramatic and hence limit the application of instrumentation to debugging contexts. The instrumentation overhead differs depending on the used instrumentation technology.<ref>Reichelt, D. G., Bulej, L., Jung, R., & van Hoorn, A. (2024, May). Overhead Comparison of Instrumentation Frameworks. In Companion of the 15th ACM/SPEC International Conference on Performance Engineering (pp. 249-256).</ref>
==See also==
* [[Hooking]] – range of techniques used to alter or augment the behavior of an operating system, of applications, or of other software components by intercepting function calls or messages or events passed between software components.
* [[Instruction set simulator]] – simulation of all instructions at machine code level to provide instrumentation
* [[Runtime intelligence]] – technologies, [[managed services]] and practices for the collection, integration, analysis, and presentation of application usage levels, patterns, and practices.
* [[Software performance analysis]] – techniques to monitor code performance, including instrumentation.
* [[Hardware performance counter]]
|