In this article we present a novel approach to analyzing performance properties of parallel applications based on event traces. We define a framework for formally specifying compound events that characterize performance behavior. The framework allows the creation of abstract building blocks that represent concepts of the underlying programming model and therefore provide an easy means to specify complex compound events. We show that using these specifications it is possible to automatically locate inefficiencies in parallel applications by looking for occurrences of the corresponding compound events in event traces. We demonstrate how our ideas apply to both the Message Passing Interface (MPI) programming model and to the Open specifications for Multi Processing (OpenMP).