A method of analyzing performance of a program executing in a computer system. A user provides a set of user defined region of the program. Thus, a user has the flexibility to choose the regions of program code profiled. The performance of user defined regions of the program is measured by a set of run-time metrics. Each user defined region is associated with a range break point. Run-time metrics measuring the performance of user defined regions of the program are updated, during execution, whenever a range break point is set. The handling of range break points may be implemented, for example, by specialized hardware and software. This method may be less intrusive than instrumentation based profiling but more accurate than sampling based profiling.
A method for determining an estimated runtime of a software application, the method including the providing of a reference runtime of the software application for a reference system configuration, wherein the reference system configuration includes a processor, a processor bus and at least one processor service component, the providing of a processor bus utilization parameter associated with the reference system configuration, the providing of a first processor bus queue statistic associated with the reference runtime, the providing of a second processor bus queue statistic associated with the reference runtime, and determining the estimated runtime based on the reference runtime, the processor bus utilization parameter, the first processor bus queue statistic and the second processor bus queue statistic.
An integrated code development tool, comprising of an editor, a project management and build system, a debugger, a profiler, and a graphical data visualization system. The editor is operable to provide a source code view which is simultaneously capable of integrating with said debugger to provide for stepping through code and setting breakpoints, and integrating with the output of said build system to display source code interleaved with corresponding assembler code created by said build system.
One embodiment of the present invention provides a system that facilitates optimizing computer program performance by using steered execution. The system operates by first receiving source code for a computer program, and then compiling a portion of this source code with a first set of optimizations to generate a first compiled portion. The system also compiles the same portion of the source code with a second set of optimizations to generate a second compiled portion. Remaining source code is compiled to generate a third compiled portion. Additionally, a rule is generated for selecting between the first compiled portion and the second compiled portion. Finally, the first compiled portion, the second compiled portion, the third compiled portion, and the rule are combined into an executable output file.
An embedded system includes a microprocessor and performance measuring logic coupled to the microprocessor and configured to record selected performance metrics. In the given routine. In general, a counter is configured to record statistics for each of the performance metrics, and the counters may be controlled using a programmable mask, which is included in a memory coupled to the microprocessor. Based on these metrics, designers may fine-tune software for the embedded system.
The invention provides a software instrumentation tool operative to control the execution of a target program, and to execute user-specified instrumentation actions upon occurrence of corresponding user-specified events during target program execution. Advantageously, the instrumentation tool permits the instrumentation actions to be implemented without modification of the target program code, and can be used to provide any desired type of instrumentation on any target program. In an illustrative embodiment, the instrumentation tool includes a frontend portion which provides a creation graphical user interface (GUI) to the tool, and a backend portion which controls execution of the target program and executes the user-specified actions. The frontend portion also includes, for a given target program, a created GUI which is created by a user for providing selected instrumentation functions for the given target program. The frontend and backend portions of the instrumentation tool may each be running on a different machine, or both may run on the same machine. The invention may be used in a wide variety of applications, including application program modification and management, fault tolerance, real-time collaboration, process monitoring, software rejuvenation and graphical interface generation.