

Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Material Type: Project; Professor: Fawcett; Class: Object Oriented Design; Subject: Computer Engineering; University: Syracuse University; Term: Spring 2008;
Typology: Study Guides, Projects, Research
1 / 2
This page cannot be seen from the preview
Don't miss anything!


This project requires you to develop a C++ program to analyze the code coverage and performance of other C++ programs. A profileWriter modifies source files to be profiled by declaring a profiler object at the beginning of each function, and declaring a profile manager object in the program’s executive’s main function. We describe this process profiler annotation. You are expected to support several roles for profiling, including: code coverage, function timing, and capturing of a history of function input parameter values. The profiler object will take some initial action, appropriate for its role, when it is constructed at the beginning of an annotated function, and takes concluding actions when it is destroyed as it goes out of scope when the thread of execution leaves the annotated function. For performance analysis, for example, it turns on a high resolution timer^1 when constructed, and stops and reads the timer in its destructor. Before leaving its destructor, it communicates results to the profile manager. The goal of this project is to develop a simple profiling framework that can be useful for testing, debugging, and performance analysis. The framework should be extensible. That is, a developer should be able to define a new profiler type and, with no other changes, use the new profiler in C++ programs that know nothing of the profiling activities, other than suffering annotations with the profiler objects. You have three things to develop: (1) a profilerWriter that creates modified source files from original source, (2) three profiler classes that implement call coverage, function timing, and parameter history, respectively, and (3) a profileManager class that accepts text information from its profiler objects, and displays the profiling results at the end of the program’s execution.
Your Profiler Framework: