  The utilization of performance monitoring probes is a valuable tool for
programmers to gather performance data. However, the manual insertion of these
probes can result in an increase in code size, code obfuscation, and an added
burden of learning different APIs associated with performance monitoring tools.
To mitigate these issues, EDPM, an embedded domain-specific language, was
developed to provide a higher level of abstraction for annotating regions of
code that require instrumentation in C and C++ programs. This paper presents
the design and implementation of EDPM and compares it to the well-known tool
PAPI, in terms of required lines of code, flexibility in configuring regions,
and performance overhead. The results of this study demonstrate that EDPM is a
low-resolution profiling tool that offers a reduction in required lines of code
and enables programmers to express various configurations of regions.
Furthermore, the design of EDPM is such that its pragmas are ignored by the
standard compiler, allowing for seamless integration into existing software
processes without disrupting build systems or increasing the size of the
executable. Additionally, the design of the EDPM pre-compiler allows for the
extension of available performance counters while maintaining a high level of
abstraction for programmers. Therefore, EDPM offers a promising solution to
simplify and optimize performance monitoring in C and C++ programs.
