After you have built a call graph model of the application, you can extract detailed information from it.
For routines and lines, you can extract the timing information shown in Table 33-9 from the ProfileRoutine and ProfileLine objects.
Property |
What it means |
---|---|
AbsoluteSelfTime |
The time spent in the routine or line itself. If the routine or line was executed more than once, this is the total time spent in the routine or line itself. |
MinSelfTime |
The shortest time spent in the routine or line itself. If the routine or line was executed only once, this is the same as AbsoluteSelfTime. |
MaxSelfTime |
The longest time spent in the routine or line itself. If the routine or line was executed only once, this is the same as AbsoluteSelfTime. |
AbsoluteTotalTime |
The time spent in the routine or line and in routines or lines called from the routine or line. If the routine or line was executed more than once, this is the total time spent in the routine or line and in called routines or lines. |
MinTotalTime |
The shortest time spent in the routine or line and in called routines or lines. If the routine or line was executed only once, this is the same as AbsoluteTotalTime. |
MaxTotalTime |
The longest time spent in the routine or line and in called routines or lines. If the routine or line was executed only once, this is the same as AbsoluteTotalTime. |
PercentSelfTime |
AbsoluteSelfTime as a percentage of the total time tracing was active. |
PercentTotalTime |
AbsoluteTotalTime as a percentage of the total time tracing was active. |
The following function extracts information from a call graph model about the routines called from a specific routine. You would use similar functions to extract information about the routines that called the given routine and about the routine itself.
The function takes a ProfileCall object and an index as arguments and returns a structure containing the number of times the called routine was executed and execution times for the called routine.
str_func_detail lstr_result ProfileClass lproclass_class ProfileRoutine lprort_routine // get the name of the called routine // from the calledroutine property of // the ProfileCall object passed to the function lprort_routine = a_pcall.Calledroutine lstr_result.Name = "" lproclass_class = a_pcall.Class IF isValid(lproclass_class) THEN & lstr_result.Name += lproclass_class.Name + "." lstr_result.name += a_pcall.Name lstr_result.hits = a_pcall.HitCount lstr_result.selfTime = a_pcall. & AbsoluteSelfTime * timeScale lstr_result.totalTime = a_pcall. & AbsoluteTotalTime * timeScale lstr_result.percentSelf = a_pcall.PercentSelfTime lstr_result.percentTotal= a_pcall.PercentTotalTime lstr_result.index = al_index RETURN lstr_result