J.H. Fröhlich, R. Wolfinger: .NET Profiling: Write Profilers With Ease Using High-Level Wrapper Classes, MSDN Magazine, Vol. 21, No. 5, pp 85-93, April 2006.


The Profiling API of the common language runtime (CLR) provides services that exceed the needs of typical function and memory profilers, but at the price of a rather bulky interface that applies low-level functional design. The latest extensions of the Profiling API for .NET Framework 2.0 increase this functionality even further. These extensions enable tools to trace not only method calls at the class level, but also data flow across assembly boundaries without the need to instrument Common Intermediate Language (CIL) code for that purpose. However, the powerful functionality and technical details of this API compromise its simplicity and usefulness. Programming with the CLR Profiling API can be laborious and error-prone because the numerous services are organized in an interface that applies a primarily functional design at a low level of abstraction. In this article we will present a high-level, easy-to-grasp, and easy-to-apply profiling API, based on the CLR Profiling API, that conceals the mechanisms necessary to filter elementary profiling data and to rejoin them into semantically coherent concepts. Programming with the high-level API should considerably reduce the development effort required to construct various types of tools that profile a program, and it affords an abstraction level close to that of high-level languages within the .NET Framework.