Capturing and displaying computer program execution timing
First Claim
1. A method of displaying an execution sequence of a first computer program comprising a plurality of subprograms, said method comprising:
- measuring an execution time duration of the plurality of subprograms;
representing the execution time duration of the plurality of subprograms as graphic objects, wherein each of the plurality of subprograms has a corresponding graphic object; and
displaying the graphic objects such that a first characteristic of said graphic objects, displayed along a first axis, represents the execution time duration, and a second characteristic of said graphic objects, displayed along a second axis, represents a hierarchical relationship among the plurality of subprograms, such that higher levels in the hierarchical relationship represent higher levels of functionality, and each lower level is directly under a single graphic object at an immediately higher level.
6 Assignments
0 Petitions
Accused Products
Abstract
A software tool for analyzing the real-time performance characteristics of computer programs. A subprogram automatically records the execution time at a large number of pre-identified points in the code to be analyzed. This time information is captured in real-time and is minimally invasive. The display is subsequently displayed using a timing diagram display tool for a graphical user interface. The displayed timing diagrams provides a visual representation of the execution of the software in time, and provides a user to scale the time or show the profile in an alternate perspective. The present invention further provides a graphical representation of the hierarchical execution of subroutines and program modules within the software by displaying the nested execution of the software.
-
Citations
38 Claims
-
1. A method of displaying an execution sequence of a first computer program comprising a plurality of subprograms, said method comprising:
-
measuring an execution time duration of the plurality of subprograms;
representing the execution time duration of the plurality of subprograms as graphic objects, wherein each of the plurality of subprograms has a corresponding graphic object; and
displaying the graphic objects such that a first characteristic of said graphic objects, displayed along a first axis, represents the execution time duration, and a second characteristic of said graphic objects, displayed along a second axis, represents a hierarchical relationship among the plurality of subprograms, such that higher levels in the hierarchical relationship represent higher levels of functionality, and each lower level is directly under a single graphic object at an immediately higher level. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17)
measuring the execution time duration of said one or more subroutines; and
representing said execution time duration of each of said one or more subroutines as a subroutine graphic object.
-
-
12. The method of claim 11 further comprising calling a timer subprogram at the beginning and end of each of said one or more subroutines.
-
13. The method of claim 12 further comprising displaying said second program and said one or more subroutines on said timeline, wherein the time relationship between said first program and said second program is synchronized.
-
14. The method of claim 3 wherein a third characteristic of said graphic objects represents a function of a subprogram corresponding to said graphic objects.
-
15. The method of claim 14 wherein said third characteristic is a user assigned text label.
-
16. The method of claim 14 wherein said third characteristic is a color.
-
17. The method of claim 1 further comprising:
-
measuring execution time of an event within said first program;
representing said execution time of said event as an event graphic object; and
displaying said event graphic object on a display device, wherein said event graphic object is superimposed on the graphic object representing a subroutine in which said event occurs.
-
-
18. A method of capturing and displaying timing data for execution of a computer program, said method comprising:
-
defining a timer subprogram;
inserting a first call to said timer subprogram in said computer program, said first call starting a timer;
inserting a second call to said timer subprogram in said computer program, said second call stopping said timer;
storing timing data produced by said timer in a timing database upon execution of said computer program, said timing data representing a time duration between said first call and said second call;
transforming said timing data into waveform data;
representing said waveform data by one or more graphic objects, a characteristic of each of said one or more graphic objects representing said time duration and a second characteristic representing a hierarchical relationship between the graphic objects, and a lower level graphic object located below a higher level graphic object which invoked the lower level graphic object; and
displaying said one or more graphic objects on a display device. - View Dependent Claims (19, 20, 21, 22, 23, 24, 25, 26, 27)
inserting a third call to said timer subprogram, said third call corresponding to an event within said computer program and said third call marking the time at which said event occurs;
storing an event timing data produced by said third call, said event timing data representing said time at which said third call occurs;
transforming said event timing data into event waveform data, said event waveform data represented by a graphical event object, a characteristic of said graphical event object representing said time at said event occurs; and
displaying said graphical event object on said display device.
-
-
20. The method of claim 19 wherein said computer program comprises a plurality of subroutines, said method further comprising:
-
inserting said first call to the timer subprogram at the beginning of each subroutine of said plurality of subroutines; and
inserting said second call to the timer subprogram at the end of each subroutine of said plurality of subroutines.
-
-
21. The method of claim 20 wherein said plurality of subroutines are arranged in a hierarchically nested relationship such that lower level subroutines of said plurality of subroutines are called by higher level subroutines, said method further comprising:
-
inserting said first call at the beginning of each lower level subroutine of said lower level subroutines; and
inserting said second call at the end of each lower level subroutine of said lower level subroutines.
-
-
22. The method of claim 21 wherein said displaying step further comprises:
-
representing each of said one or more graphic objects as a waveform, said first characteristic comprising a length of a positive portion of said waveform;
displaying said one or more graphic objects on a time line; and
displaying said hierarchically nested relationship among said higher level subroutines and said lower level subroutines in a vertical display such that each higher level subroutine is displayed above each corresponding lower level subroutine.
-
-
23. The method of claim 19 wherein displaying said graphical event object further comprises displaying said graphical event object on a time line, and wherein said graphical event object is represented as a vertical line, said characteristic of said graphical event object comprising the placement of said vertical line relative to said time-line.
-
24. The method of claim 20 wherein said computer program is a test program for testing integrated circuit devices in automatic test equipment, and each subroutine of said plurality of subroutines performs a particular test function.
-
25. The method of claim 18 wherein transforming said timing data into waveform data further comprises:
-
transforming said timing data into function level data;
storing said function level data in a function level array; and
transforming said function level data into said waveform data.
-
-
26. The method of claim 25 wherein said timer subprogram is class defined within the computer C++ language.
-
27. The method of claim 25 wherein said first call is a C++ constructor function, and said second call is a C++ destructor function.
-
28. A memory containing a sequence of instructions, said sequence of instructions being executable by a processor, and which, when executed by said processor causes said processor to perform the steps of:
-
measuring an execution time duration of one or more subprograms within a first computer program;
representing said execution time duration of each of said one or more subprograms as a graphic object, the graphic object having multiple characteristics; and
displaying said graphic objects on a display device such that a first characteristic of each of said graphic objects represents said execution time duration, and a second characteristic of each of said graphic objects represents a hierarchical relationship among said one or more subprograms, such that higher levels in the hierarchical relationship represent higher levels of functionality, and no lower level spans multiple graphic objects at a higher levels. - View Dependent Claims (29, 30, 31, 32)
measuring the execution time duration of an event within said first program;
representing said execution time duration of said event as an event graphic object; and
displaying said event graphic object on said display device, wherein said event graphic object is superimposed on the graphic object representing a subprogram in which said event occurs.
-
-
30. The memory of claim 28 further containing instructions that cause said processor to perform the steps of:
-
displaying said graphic objects on a display screen of a graphic user interface, said graphic user interface comprising commands allowing a user to manipulate the display of said graphic objects;
displaying a timeline on said display screen for measuring a length of said graphic objects as a unit of time;
displaying a horizontal scroll bar on said display screen for scrolling across different segments of time on said timeline;
displaying a vertical number sequence on said display screen;
assigning a number of said vertical number sequence to graphic objects in a particular region of said display screen; and
displaying a vertical scroll bar on said display screen for scrolling vertically to display said hierarchical relationship among said one or more subprograms, wherein said hierarchical relationship comprises a first subprogram of said one or more subprograms calling a second subprogram of said one or more subprograms, and wherein the execution time duration of said second subprogram is not longer than the execution time duration of said first subprogram.
-
-
31. The memory of claim 30 further including instructions that cause said processor to perform a step of displaying the execution time duration of a second computer program comprising one or more subroutines, said step of displaying the execution time of said second computer program comprising the steps of:
-
measuring the execution time duration of said one or more subroutines; and
representing the execution time duration of each of said one or more subroutines as a subroutine graphic object.
-
-
32. The memory of claim 31 further including instructions that cause said processor to perform the step of displaying the execution time duration of said second program and said one or more subroutines on said time line, wherein the time relationship between said first program and said second program is synchronized.
-
33. A memory containing a computer program including a sequence of instructions, said sequence of instructions being executable by a processor, and which, when executed by said processor causes said processor to perform the steps of:
-
defining a timer subprogram;
inserting a first call to said timer subprogram in said computer program, said first call starting a timer;
inserting a second call to said timer subprogram in said computer program, said second call stopping said timer;
storing timing data produced by said timer in a timing database upon execution of said computer program, said timing data representing a time duration between said first call and said second call;
transforming said timing data into waveform data;
representing said waveform data by one or more graphic objects, a characteristic of each of said one or more graphic objects representing said time duration and a second characteristic representing a hierarchical relationship between the graphic objects, such that higher levels in the hierarchical relationship represent higher levels of functionality, and each lower level is directly under a single graphic object at an immediately higher level; and
displaying said one or more graphic objects on a display device. - View Dependent Claims (34, 35, 36, 37)
inserting a third call to said timer subprogram, said third call corresponding to an event within said computer program and said third call marking the time at which said event occurs;
storing an event timing data produced by said third call, said event timing data representing said time at which said third call occurs;
transforming said event timing data into event waveform data, said event waveform data represented by a graphical event object, a characteristic of said graphical event object representing said time at said event occurs; and
displaying said graphical event object on said display device.
-
-
35. The memory of claim 34 further including instructions which cause said processor to perform the step of displaying said graphical event object on a time-line, and wherein said graphical event object is represented as a vertical line, said characteristic of said graphical event object comprising the placement of said vertical line relative to said time-line.
-
36. The memory of claim 33 further including instructions that cause said processor to perform the step of:
-
representing each of said one or more graphic objects as a waveform, said characteristic comprising a length of a positive portion of said waveform;
displaying said one or more graphic objects on a time-line; and
displaying a hierarchically nested relationship among subroutines represented by the event timing data, such that graphic objects for higher level subroutines are displayed above graphic objects for lower level subroutines in a vertical display.
-
-
37. The memory of claim 33 further including instructions that cause said processor to perform the steps of:
-
transforming said timing data into function level data;
storing said function level data in a function level array; and
transforming said function level data into said waveform data.
-
-
38. A computer-readable medium having stored thereon a plurality of sequences of instructions, said plurality of sequences of instructions including sequences of instructions which, when executed by a processor, cause said processor to perform the steps of:
-
measuring an execution time duration of one or more subprograms within a computer program;
representing said execution time duration of said one or more subprograms as graphic objects, wherein each of said graphic objects corresponds to a subprogram of said one or more subprograms; and
displaying said graphic objects on a display such that a location along a first axis of said graphic objects represents said execution time duration, and the location along a second axis of said graphic objects represents a hierarchical relationship among said one or more subprograms, such that a first graphic object representing a first subprogram that is called by a second subprogram is illustrated below a second graphic object representing the second subprogram, and the first graphic object does not extend beyond the second graphic object.
-
Specification