CMPSC
311,
Introduction to Systems Programming
Programming-Support Tools
Reading
- The
Joel
Test: 12 Steps to Better Code, Joel Spolsky, Aug. 2000.
- Do you use source control?
- Can you make a build in one step?
- Do you make daily builds?
- Do you have a bug database?
- Do you fix bugs before writing new code?
- Do you have an up-to-date schedule?
- Do you have a spec?
- Do programmers have quiet working conditions?
- Do you use the best tools money can buy?
- Do you have testers?
- Do new candidates write code during their interview?
- Do you do hallway usability testing?
- revision control, source control - SCCS, RCS, CVS, Subversion,
Git
- collaboration tools
prof (demo on Solaris)
example.c (just a random
program)
#include
<stdio.h>
#include <math.h>
long long int lli_total(int n);
float float_total(int n);
double double_total(int n);
double double_turn(int n);
int main(void)
{
int c;
long long int lli_sum = 0;
float float_sum = 0;
double double_sum = 0;
double double_take = 0;
while ((c = getc(stdin)) != EOF)
{
lli_sum += lli_total(c);
float_sum += float_total(c);
double_sum +=
double_total(c);
double_take +=
double_turn(c);
}
printf("long long int :: %lld\n", lli_sum);
printf("float ::
%.14E\n", (double) float_sum);
printf("double
:: %.14E\n", double_sum);
printf("double take :: %.14E\n",
double_take);
return 0;
}
long long int lli_total(int n)
{
static long long int a = 0;
return (a += (long long int) n);
}
float float_total(int n)
{
static float a = 0;
return (a += (float) n);
}
double double_total(int n)
{
static double a = 0;
return (a += (double) n);
}
double double_turn(int n)
{
static double a = 0;
return (a += sin(cos(tan((double) n))));
}
Input file sizes
5527259 |
A
|
31098434 |
B
|
311838028 |
C
|
% cc -p example.c
Undefined
first
referenced
symbol
in
file
cos
example.o
sin
example.o
tan
example.o
ld: fatal: Symbol referencing errors. No output written to a.out
% cc -p example.c -lm
% ls -l
total 136
-rwx------ 1 dheller
fcse 49168 Sep 13 17:06 a.out*
-rw------- 1 dheller
fcse 1096 Sep 13 16:53
example.c
% a.out < a.out
long long int :: 64519375562
float ::
6.45170790400000E+10
double ::
6.45193755620000E+10
double take :: 7.11552487639915E+08
% ls -l
total 176
-rwx------ 1 dheller
fcse 49168 Sep 13 17:06 a.out*
-rw------- 1 dheller
fcse 1096 Sep 13 16:53
example.c
-rw------- 1 dheller
fcse 12340 Sep 13 17:06
mon.out
% prof a.out
%Time Seconds Cumsecs #Calls
msec/call
Name
100.0 0.01
0.01
49168 0.0002 double_turn
0.0 0.00
0.01
1 0.
main
0.0 0.00
0.01 49168 0.0000
lli_total
0.0 0.00
0.01 49168 0.0000
float_total
0.0 0.00
0.01 49168 0.0000
double_total
% a.out < A
long long int :: 1153481903636598
float ::
1.14650273074381E+15
double ::
1.15348190363660E+15
double take :: 6.27132166682038E+12
% prof a.out
%Time Seconds Cumsecs #Calls
msec/call
Name
26.0 0.58 0.58
5527259 0.0001 double_turn
23.8 0.53
1.11
__mt_prof_release_lock
17.5 0.39
1.50 1
390. main
13.9 0.31
1.8122109037 0.0000 _mcount
7.6 0.17 1.98
5527259 0.0000 lli_total
6.7 0.15 2.13
5527259 0.0000 float_total
4.5 0.10 2.23
5527259 0.0000 double_total
% a.out < B
long long int :: 62498030982782621
float ::
6.33091579728364E+16
double ::
6.24980309829415E+16
double take :: 1.69534171340307E+14
% prof a.out
%Time Seconds Cumsecs #Calls
msec/call
Name
25.6 2.79
2.7931098434 0.0001
double_turn
25.2 2.75
5.54
__mt_prof_release_lock
15.5 1.69
7.23 1
1690. main
12.7 1.38
8.61124393737 0.0000 _mcount
7.8 0.85
9.4631098434 0.0000 lli_total
6.6 0.72
10.1831098434 0.0000
double_total
6.6 0.72
10.9031098434 0.0000
float_total
% a.out < C
long long int :: 6468656676033029885
float ::
7.20575940379279E+16
double ::
6.46865667603217E+18
double take :: 1.60954936537080E+16
% prof a.out
%Time Seconds Cumsecs #Calls
msec/call
Name
24.6 27.93
27.93
__mt_prof_release_lock
24.3 27.60
55.53311838028 0.0001
double_turn
16.3 18.47
74.00 1
18470. main
14.6 16.58
90.581247352113 0.0000 _mcount
7.2 8.21
98.79311838028 0.0000
lli_total
6.5 7.43
106.22311838028 0.0000
double_total
6.4 7.32
113.54311838028 0.0000
float_total
-----------
% cc -O -p example.c -lm
% a.out < a.out
long long int :: 63764804505
float ::
6.37624483840000E+10
double ::
6.37648045050000E+10
double take :: 7.10334413883479E+08
% prof a.out
%Time Seconds Cumsecs #Calls
msec/call
Name
50.0 0.01 0.01
196161 0.0001 _mcount
50.0 0.01
0.02
__mt_prof_release_lock
0.0 0.00
0.02 49040 0.0000
lli_total
0.0 0.00
0.02 49040 0.0000
float_total
0.0 0.00
0.02
1 0.
main
0.0 0.00
0.02 49040 0.0000
double_turn
0.0 0.00
0.02 49040 0.0000
double_total
% a.out < A
long long int :: 1153481903636598
float ::
1.14650273074381E+15
double ::
1.15348190363660E+15
double take :: 6.27132166682038E+12
% prof a.out
%Time Seconds Cumsecs #Calls
msec/call
Name
28.2 0.49 0.49
5527259 0.0001 double_turn
23.0 0.40
0.89
__mt_prof_release_lock
13.8 0.24
1.1322109037 0.0000 _mcount
13.2 0.23
1.36 1
230. main
10.3 0.18 1.54
5527259 0.0000 double_total
7.5 0.13 1.67
5527259 0.0000 float_total
4.0 0.07 1.74
5527259 0.0000 lli_total
% a.out < B
long long int :: 62498030982782621
float ::
6.33091579728364E+16
double ::
6.24980309829415E+16
double take :: 1.69534171340307E+14
% prof a.out
%Time Seconds Cumsecs #Calls
msec/call
Name
27.6 2.62
2.62
__mt_prof_release_lock
25.9 2.46
5.0831098434 0.0001
double_turn
17.9 1.70
6.78124393737 0.0000 _mcount
11.4 1.08
7.86 1
1080. main
7.8 0.74
8.6031098434 0.0000
float_total
5.1 0.48
9.0831098434 0.0000 lli_total
4.4 0.42
9.5031098434 0.0000
double_total
% a.out < C
long long int :: 6468656676033029885
float ::
7.20575940379279E+16
double ::
6.46865667603217E+18
double take :: 1.60954936537080E+16
% prof a.out
%Time Seconds Cumsecs #Calls
msec/call
Name
27.9 26.77
26.77311838028 0.0001
double_turn
26.7 25.65
52.42
__mt_prof_release_lock
16.3 15.62
68.041247352113 0.0000 _mcount
12.0 11.53
79.57 1
11530. main
6.3 6.07
85.64311838028 0.0000
double_total
6.3 6.06
91.70311838028 0.0000
float_total
4.4 4.24
95.94311838028 0.0000
lli_total
gprof (demo on Linux)
% gcc -pg example.c
/tmp/ccF6bGPn.o(.text+0x1ce): In function `double_turn':
: undefined reference to `tan'
/tmp/ccF6bGPn.o(.text+0x1e4): In function `double_turn':
: undefined reference to `cos'
/tmp/ccF6bGPn.o(.text+0x1fa): In function `double_turn':
: undefined reference to `sin'
collect2: ld returned 1 exit status
% gcc -pg example.c -lm
% ls -l
total 20
-rwx------ 1 dheller fcse 6625 Sep 14 12:52 a.out*
-rw------- 1 dheller fcse 1096 Sep 13 16:53 example.c
% a.out < a.out
long long int :: 1308265271
float ::
1.30826329600000E+09
double ::
1.30826527100000E+09
double take :: 1.24146132344868E+07
% ls -l
total 28
-rwx------ 1 dheller fcse 6625 Sep 14 12:52 a.out*
-rw------- 1 dheller fcse 1096 Sep 13 16:53 example.c
-rw------- 1 dheller fcse 629 Sep 14 12:54 gmon.out
% gprof a.out
Flat profile:
Each sample counts as 0.01 seconds.
no time accumulated
% cumulative
self
self
total
time seconds
seconds
calls Ts/call Ts/call name
0.00
0.00
0.00 6625
0.00 0.00 double_total
0.00
0.00
0.00 6625
0.00 0.00 double_turn
0.00
0.00
0.00 6625
0.00 0.00 float_total
0.00
0.00
0.00 6625
0.00 0.00 lli_total
% the
percentage
of the total running time of the
time program used by this
function.
cumulative a running sum of the number of seconds accounted
seconds for by this function and those listed
above
it.
self the number of seconds
accounted for by this
seconds function alone. This is the major
sort
for this
listing.
calls the number of times this
function
was invoked, if
this
function is profiled, else blank.
self the average number of
milliseconds spent in this
ms/call function per call, if this function is
profiled,
else blank.
total the average number of
milliseconds
spent in this
ms/call function and its descendents per call,
if
this
function is profiled, else blank.
name the name of the
function. This is the minor sort
for
this
listing. The index shows the location of
the function in the gprof listing.
If
the index is
in parenthesis it shows where it
would
appear in
the gprof listing if it were to be
printed.
Call
graph (explanation follows)
granularity: each sample hit covers 4 byte(s) no time propagated
index % time self
children
called name
0.00
0.00
6625/6625
main [11]
[1] 0.0
0.00 0.00
6625 double_total
[1]
-----------------------------------------------
0.00
0.00
6625/6625
main [11]
[2] 0.0
0.00 0.00
6625 double_turn
[2]
-----------------------------------------------
0.00
0.00
6625/6625
main [11]
[3] 0.0
0.00 0.00
6625 float_total
[3]
-----------------------------------------------
0.00
0.00
6625/6625
main [11]
[4] 0.0
0.00 0.00
6625 lli_total [4]
-----------------------------------------------
This table describes the call tree of the program, and was
sorted
by
the total amount of time spent in each function and its
children.
Each entry in this table consists of several lines.
The
line with the
index number at the left hand margin lists the current
function.
The lines above it list the functions that called this
function,
and the lines below it list the functions this one called.
This line lists:
index A unique number
given
to each element of the table.
Index numbers are sorted
numerically.
The index number is printed
next
to every function name so
it is easier to look up
where the
function in the table.
% time This is the
percentage of the `total' time that was spent
in this function and its
children. Note that due to
different viewpoints,
functions
excluded by options, etc,
these numbers will NOT add
up to
100%.
self This is the total
amount of time spent in this function.
children This is the
total
amount of time propagated into this
function by its children.
called This is the
number of
times the function was called.
If the function called
itself
recursively, the number
only includes non-recursive
calls, and is followed by
a `+' and the number of
recursive
calls.
name The name of the
current
function. The index number is
printed after it. If
the
function is a member of a
cycle, the cycle number is
printed between the
function's name and the
index
number.
For the function's parents, the fields have the following
meanings:
self This is the amount
of
time that was propagated directly
from the function into this
parent.
children This is the
amount
of time that was propagated from
the function's children into
this
parent.
called This is the
number of
times this parent called the
function `/' the total
number of
times the function
was called. Recursive
calls
to the function are not
included in the number after
the
`/'.
name This is the name
of the
parent. The parent's index
number is printed after
it.
If the parent is a
member of a cycle, the cycle
number is printed between
the name and the index
number.
If the parents of the function cannot be determined, the
word
`<spontaneous>' is printed in the `name' field, and
all the
other
fields are blank.
For the function's children, the fields have the following
meanings:
self This is the amount
of
time that was propagated directly
from the child into the
function.
children This is the
amount
of time that was propagated from the
child's children to the
function.
called This is the
number of
times the function called
this child `/' the total
number
of times the child
was called. Recursive
calls
by the child are not
listed in the number after
the
`/'.
name This is the name
of the
child. The child's index
number is printed after
it.
If the child is a
member of a cycle, the cycle
number is printed
between the name and the
index
number.
If there are any cycles (circles) in the call graph, there
is an
entry for the cycle-as-a-whole. This entry shows who
called
the
cycle (as parents) and the members of the cycle (as
children.)
The `+' recursive calls entry shows the number of function
calls
that
were internal to the cycle, and the calls entry for each
member
shows,
for that member, how many times it was called from other
members
of
the cycle.
Index by function name
[1]
double_total
[3]
float_total
[2]
double_turn
[4]
lli_total
% a.out < A
long long int :: 1153481903636598
float ::
1.14650273074381E+15
double ::
1.15348190363660E+15
double take :: 6.27132166682039E+12
% gprof a.out
Flat profile:
Each sample counts as 0.01 seconds.
% cumulative
self
self
total
time seconds
seconds
calls ns/call ns/call name
50.00
0.17
0.17 5527259 30.76
30.76 double_turn
27.94
0.27
0.10
main
11.76
0.30
0.04 5527259
7.24
7.24 float_total
8.82
0.34
0.03 5527259
5.43
5.43 double_total
1.47
0.34
0.01 5527259
0.90
0.90 lli_total
< ... >
Call
graph (explanation follows)
granularity: each sample hit covers 4 byte(s) for 2.94% of 0.34
seconds
index % time self
children
called name
<spontaneous>
[1] 100.0
0.10
0.24
main
[1]
0.17
0.00
5527259/5527259
double_turn [2]
0.04
0.00
5527259/5527259
float_total [3]
0.03
0.00
5527259/5527259
double_total [4]
0.01
0.00
5527259/5527259
lli_total [5]
-----------------------------------------------
0.17
0.00
5527259/5527259
main [1]
[2] 50.0
0.17 0.00
5527259
double_turn [2]
-----------------------------------------------
0.04
0.00
5527259/5527259
main [1]
[3] 11.8
0.04 0.00
5527259
float_total [3]
-----------------------------------------------
0.03
0.00
5527259/5527259
main [1]
[4] 8.8
0.03 0.00
5527259
double_total [4]
-----------------------------------------------
0.01
0.00
5527259/5527259
main [1]
[5] 1.5
0.01 0.00
5527259 lli_total
[5]
-----------------------------------------------
< ... >
Index by function name
[4]
double_total
[3]
float_total
[1]
main
[2]
double_turn
[5]
lli_total
% a.out < B
long long int :: 62498030982782621
float ::
6.33091579728364E+16
double ::
6.24980309829415E+16
double take :: 1.69534171340284E+14
% gprof a.out
Flat profile:
Each sample counts as 0.01 seconds.
% cumulative
self
self
total
time seconds
seconds
calls ns/call ns/call name
45.77
0.92
0.92 31098434 29.58
29.58
double_turn
24.38
1.41
0.49
main
17.91
1.77
0.36 31098434 11.58
11.58
double_total
10.20
1.98
0.20 31098434 6.59
6.59 float_total
1.74
2.01
0.04 31098434 1.13
1.13 lli_total
< ... >
Call
graph (explanation follows)
granularity: each sample hit covers 4 byte(s) for 0.50% of 2.01
seconds
index % time self
children
called name
<spontaneous>
[1] 100.0
0.49
1.52
main
[1]
0.92
0.00
31098434/31098434
double_turn [2]
0.36
0.00
31098434/31098434
double_total [3]
0.20
0.00
31098434/31098434
float_total [4]
0.04
0.00
31098434/31098434
lli_total [5]
-----------------------------------------------
0.92
0.00
31098434/31098434
main [1]
[2] 45.8
0.92 0.00
31098434
double_turn [2]
-----------------------------------------------
0.36
0.00
31098434/31098434
main [1]
[3] 17.9
0.36 0.00
31098434
double_total
[3]
-----------------------------------------------
0.20
0.00
31098434/31098434
main [1]
[4] 10.2
0.20 0.00
31098434
float_total [4]
-----------------------------------------------
0.04
0.00
31098434/31098434
main [1]
[5] 1.7
0.04 0.00
31098434 lli_total
[5]
-----------------------------------------------
< ... >
Index by function name
[3]
double_total
[4]
float_total
[1]
main
[2]
double_turn
[5]
lli_total
% a.out < C
long long int :: 6468656676033029885
float ::
7.20575940379279E+16
double ::
6.46865667603217E+18
double take :: 1.60954936537078E+16
% gprof a.out
Flat profile:
Each sample counts as 0.01 seconds.
% cumulative
self
self
total
time seconds
seconds
calls ns/call ns/call name
47.69 10.11 10.11
311838028 32.42 32.42
double_turn
26.42 15.71
5.60
main
14.43 18.77
3.06
311838028 9.81
9.81 double_total
9.13 20.70
1.94
311838028 6.21
6.21 float_total
2.33 21.20
0.49
311838028 1.59
1.59 lli_total
< ... >
Call
graph (explanation follows)
granularity: each sample hit covers 4 byte(s) for 0.05% of 21.20
seconds
index % time self
children
called name
<spontaneous>
[1] 100.0 5.60
15.60
main
[1]
10.11
0.00
311838028/311838028
double_turn [2]
3.06
0.00
311838028/311838028
double_total [3]
1.94
0.00
311838028/311838028
float_total [4]
0.49
0.00
311838028/311838028
lli_total [5]
-----------------------------------------------
10.11
0.00
311838028/311838028
main [1]
[2] 47.7
10.11
0.00 311838028
double_turn [2]
-----------------------------------------------
3.06
0.00
311838028/311838028
main [1]
[3] 14.4
3.06 0.00
311838028
double_total
[3]
-----------------------------------------------
1.94
0.00
311838028/311838028
main [1]
[4] 9.1
1.94 0.00
311838028
float_total
[4]
-----------------------------------------------
0.49
0.00
311838028/311838028
main [1]
[5] 2.3
0.49 0.00
311838028
lli_total [5]
-----------------------------------------------
< ... >
Index by function name
[3]
double_total
[4]
float_total
[1]
main
[2]
double_turn
[5]
lli_total
------------------
% gcc -O -pg example.c -lm
% ls -l
total 28
-rwx------ 1 dheller fcse 6429 Sep 14 13:13 a.out*
-rw------- 1 dheller fcse 1096 Sep 13 16:53 example.c
% a.out < a.out
long long int :: 1173164429
float ::
1.17316390400000E+09
double ::
1.17316442900000E+09
double take :: 1.14800782388178E+07
% gprof a.out
Flat profile:
Each sample counts as 0.01 seconds.
no time accumulated
% cumulative
self
self
total
time seconds
seconds
calls Ts/call Ts/call name
0.00
0.00
0.00 6429
0.00 0.00 double_total
0.00
0.00
0.00 6429
0.00 0.00 double_turn
0.00
0.00
0.00 6429
0.00 0.00 float_total
0.00
0.00
0.00 6429
0.00 0.00 lli_total
< ... >
Call
graph (explanation follows)
granularity: each sample hit covers 2 byte(s) no time propagated
index % time self
children
called name
0.00
0.00
6429/6429
main [11]
[1] 0.0
0.00 0.00
6429 double_total
[1]
-----------------------------------------------
0.00
0.00
6429/6429
main [11]
[2] 0.0
0.00 0.00
6429 double_turn
[2]
-----------------------------------------------
0.00
0.00
6429/6429
main [11]
[3] 0.0
0.00 0.00
6429 float_total
[3]
-----------------------------------------------
0.00
0.00
6429/6429
main [11]
[4] 0.0
0.00 0.00
6429 lli_total [4]
-----------------------------------------------
< ... >
Index by function name
[1]
double_total
[3]
float_total
[2]
double_turn
[4]
lli_total
% a.out < A
long long int :: 1153481903636598
float ::
1.14650273074381E+15
double ::
1.15348190363660E+15
double take :: 6.27132166682039E+12
% gprof a.out
Flat profile:
Each sample counts as 0.01 seconds.
% cumulative
self
self
total
time seconds
seconds
calls ns/call ns/call name
43.06
0.03
0.03 5527259
5.45
5.45 double_turn
43.06
0.06
0.03
main
14.35
0.07
0.01 5527259
1.82
1.82 lli_total
0.00
0.07
0.00 5527259
0.00
0.00 double_total
0.00
0.07
0.00 5527259
0.00
0.00 float_total
< ... >
Call
graph (explanation follows)
granularity: each sample hit covers 2 byte(s) for 14.22% of 0.07
seconds
index % time self
children
called name
<spontaneous>
[1] 100.0
0.03
0.04
main
[1]
0.03
0.00
5527259/5527259
double_turn [2]
0.01
0.00
5527259/5527259
lli_total [3]
0.00
0.00
5527259/5527259
float_total [5]
0.00
0.00
5527259/5527259
double_total [4]
-----------------------------------------------
0.03
0.00
5527259/5527259
main [1]
[2] 42.9
0.03 0.00
5527259
double_turn [2]
-----------------------------------------------
0.01
0.00
5527259/5527259
main [1]
[3] 14.3
0.01 0.00
5527259 lli_total
[3]
-----------------------------------------------
0.00
0.00
5527259/5527259
main [1]
[4] 0.0
0.00 0.00
5527259
double_total [4]
-----------------------------------------------
0.00
0.00
5527259/5527259
main [1]
[5] 0.0
0.00 0.00
5527259
float_total [5]
-----------------------------------------------
< ... >
Index by function name
[4]
double_total
[5]
float_total
[1]
main
[2]
double_turn
[3]
lli_total
% a.out < B
long long int :: 62498030982782621
float ::
6.33091579728364E+16
double ::
6.24980309829415E+16
double take :: 1.69534171340284E+14
% gprof a.out
Flat profile:
Each sample counts as 0.01 seconds.
% cumulative
self
self
total
time seconds
seconds
calls ns/call ns/call name
46.70
0.33
0.33
main
38.21
0.60
0.27 31098434 8.72
8.72 double_turn
6.37
0.65
0.05 31098434 1.45
1.45 double_total
5.66
0.69
0.04 31098434 1.29
1.29 lli_total
3.54
0.71
0.03 31098434 0.81
0.81 float_total
< ... >
Call
graph (explanation follows)
granularity: each sample hit covers 2 byte(s) for 1.40% of 0.71
seconds
index % time self
children
called name
<spontaneous>
[1] 100.0
0.33
0.38
main
[1]
0.27
0.00
31098434/31098434
double_turn [2]
0.05
0.00
31098434/31098434
double_total [3]
0.04
0.00
31098434/31098434
lli_total [4]
0.03
0.00
31098434/31098434
float_total [5]
-----------------------------------------------
0.27
0.00
31098434/31098434
main [1]
[2] 38.0
0.27 0.00
31098434
double_turn [2]
-----------------------------------------------
0.05
0.00
31098434/31098434
main [1]
[3] 6.3
0.05 0.00
31098434
double_total
[3]
-----------------------------------------------
0.04
0.00
31098434/31098434
main [1]
[4] 5.6
0.04 0.00
31098434 lli_total
[4]
-----------------------------------------------
0.03
0.00
31098434/31098434
main [1]
[5] 3.5
0.03 0.00
31098434
float_total [5]
-----------------------------------------------
< ... >
Index by function name
[3]
double_total
[5]
float_total
[1]
main
[2]
double_turn
[4]
lli_total
% a.out < C
long long int :: 6468656676033029885
float ::
1.44115188075856E+17
double ::
6.46865667603217E+18
double take :: 1.60954936537078E+16
% gprof a.out
Flat profile:
Each sample counts as 0.01 seconds.
% cumulative
self
self
total
time seconds
seconds
calls ns/call ns/call name
47.22
3.06
3.06
main
32.12
5.15
2.08 311838028
6.69
6.69 double_turn
9.13
5.74
0.59 311838028
1.90
1.90 lli_total
7.20
6.21
0.47 311838028
1.50
1.50 float_total
4.80
6.52
0.31 311838028
1.00
1.00 double_total
< ... >
Call
graph (explanation follows)
granularity: each sample hit covers 2 byte(s) for 0.15% of 6.52
seconds
index % time self
children
called name
<spontaneous>
[1] 100.0
3.06
3.46
main
[1]
2.08
0.00
311838028/311838028
double_turn [2]
0.59
0.00
311838028/311838028
lli_total [3]
0.47
0.00
311838028/311838028
float_total [4]
0.31
0.00
311838028/311838028
double_total [5]
-----------------------------------------------
2.08
0.00
311838028/311838028
main [1]
[2] 32.0
2.08 0.00
311838028
double_turn
[2]
-----------------------------------------------
0.59
0.00
311838028/311838028
main [1]
[3] 9.1
0.59 0.00
311838028
lli_total [3]
-----------------------------------------------
0.47
0.00
311838028/311838028
main [1]
[4] 7.2
0.47 0.00
311838028
float_total
[4]
-----------------------------------------------
0.31
0.00
311838028/311838028
main [1]
[5] 4.8
0.31 0.00
311838028
double_total
[5]
-----------------------------------------------
< ... >
Index by function name
[5]
double_total
[4]
float_total
[1]
main
[2]
double_turn
[3]
lli_total
%
Last modified, 12 Feb. 2013