
Chapter 26: Tracing and Profiling Applications
Extracting information from the call graph model
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 26-9 from
the ProfileRoutine and ProfileLine objects.
Table 26-9: Timing information in the call
graph model
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.
|
Example: extracting information from a call graph
model
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
Copyright © 2005. Sybase Inc. All rights reserved.
|
|
View this book as PDF 