My Project
Loading...
Searching...
No Matches
Singular
sprof.c
Go to the documentation of this file.
1
#include <stdio.h>
2
#include <string.h>
3
#include <malloc.h>
4
5
VAR
FILE *
f
;
6
#define NUM_FILES 200
7
8
VAR
char
*
file_names
[
NUM_FILES
];
9
VAR
int
*
line_buf
[
NUM_FILES
];
10
VAR
char
buf
[200];
11
VAR
int
fn_cnt
=0;
12
13
void
add_line
(
int
fn,
int
l
)
14
{
15
if
((
l
<32000)||(
l
<0))
16
{
17
int
i
=
l
/32;
18
int
j
=
l
%32;
19
line_buf
[fn][
i
] |= (1<<
j
);
20
}
21
else
printf(
"overflow: %d\n"
,
l
);
22
}
23
void
add_fn
(
int
fn,
char
*
b
)
24
{
25
file_names
[fn]=
strdup
(
b
);
26
line_buf
[fn]=(
int
*)
malloc
(1000*
sizeof
(
int
));
27
memset(
line_buf
[fn],0,1000*
sizeof
(
int
));
28
}
29
30
void
print_line
(
int
l
)
31
{
32
FILE *fi=fopen(
file_names
[
l
],
"r"
);
33
FILE *fo;
34
int
i
;
35
int
ln;
36
if
(fi==
NULL
)
37
{
38
printf(
"%s not found\n"
,
file_names
[
l
]);
39
return
;
40
}
41
else
42
{
43
char
b
[200];
44
snprintf(
b
,200,
"%s.prof"
,
file_names
[
l
]);
45
fo=fopen(
b
,
"w"
);
46
}
47
ln=0;
48
while
(!feof(fi))
49
{
50
char
line[500];
51
char
*
s
;
52
s
=fgets(line,500,fi);ln++;
53
if
(
s
==
NULL
)
break
;
54
if
((
line_buf
[
l
][ln/32] & (1<<(ln %32))))
55
fprintf(fo,
"%4d + %s"
,ln,line);
56
else
57
fprintf(fo,
"%4d %s"
,ln,line);
58
}
59
fclose(fi);
60
fclose(fo);
61
for
(
i
=0;
i
<1000;
i
++)
62
{
63
if
(
line_buf
[
l
][
i
]!=0)
64
{
65
int
j
;
66
for
(
j
=0;
j
<32;
j
++)
67
if
((1<<
j
) &
line_buf
[
l
][
i
]) printf(
"%d,"
,
i
*32+
j
);
68
}
69
}
70
printf(
"\n"
);
71
}
72
73
int
main
(
int
argc,
char
** argv)
74
{
75
memset(
file_names
,0,
NUM_FILES
*
sizeof
(
char
*));
76
f
=fopen(
"smon.out"
,
"r"
);
77
if
(
f
==
NULL
) { printf(
"cannot read smon.out\n"
);
return
2; }
78
while
(!feof(
f
))
79
{
80
if
(fgets(
buf
,200,
f
)==
NULL
)
break
;
81
if
((strncmp(
buf
,
"STDIN"
,5)!=0)
82
&& (strncmp(
buf
,
"(none)"
,6)!=0)
83
&& (strncmp(
buf
,
"::"
,2)!=0))
84
{
85
/* get fn */
86
int
i
=0;
87
char
c;
88
int
line_no;
89
while
((
buf
[
i
]!=
':'
)&&(
i
<200))
i
++;
90
buf
[
i
]=
'\0'
;
91
if
(
i
>=200)
continue
;
92
while
((
buf
[
i
]!=
' '
)&&(
i
<200))
i
++;
93
sscanf(
buf
+
i
,
"%d"
,&line_no);
94
for
(
i
=0;
i
<
fn_cnt
;
i
++)
95
{
96
if
(strcmp(
file_names
[
i
],
buf
)==0) {
add_line
(
i
,line_no);
break
; }
97
}
98
if
((
i
==
fn_cnt
)&&(
i
<
NUM_FILES
))
99
{
100
printf(
"new file:%s\n"
,
buf
);
101
add_fn
(
i
,
buf
);
102
add_line
(
i
,line_no);
103
fn_cnt
++;
104
}
105
}
106
}
107
fclose(
f
);
108
printf(
"----- all read\n"
);
109
{
110
int
i
;
111
for
(
i
=0;
i
<
fn_cnt
;
i
++)
112
{
113
printf(
"File %s =============================\n"
,
file_names
[
i
]);
114
print_line
(
i
);
115
}
116
}
117
return
(0);
118
}
l
int l
Definition
cfEzgcd.cc:100
i
int i
Definition
cfEzgcd.cc:132
b
CanonicalForm b
Definition
cfModGcd.cc:4111
s
const CanonicalForm int s
Definition
facAbsFact.cc:51
j
int j
Definition
facHensel.cc:110
VAR
#define VAR
Definition
globaldefs.h:5
strdup
#define strdup
Definition
omAllocFunc.c:18
malloc
#define malloc
Definition
omAllocFunc.c:12
NULL
#define NULL
Definition
omList.c:12
main
int main()
Definition
p_Procs_Generate.cc:219
buf
VAR char buf[200]
Definition
sprof.c:10
add_line
void add_line(int fn, int l)
Definition
sprof.c:13
line_buf
VAR int * line_buf[NUM_FILES]
Definition
sprof.c:9
print_line
void print_line(int l)
Definition
sprof.c:30
add_fn
void add_fn(int fn, char *b)
Definition
sprof.c:23
NUM_FILES
#define NUM_FILES
Definition
sprof.c:6
f
VAR FILE * f
Definition
sprof.c:5
fn_cnt
VAR int fn_cnt
Definition
sprof.c:11
file_names
VAR char * file_names[NUM_FILES]
Definition
sprof.c:8
Generated on Sat Feb 1 2025 17:25:29 for My Project by
doxygen 1.12.0
for
Singular