profiler update (now presents results by predicates or/and clauses)
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@823 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
parent
d290885f8f
commit
9a498e00f3
75
C/stdpreds.c
75
C/stdpreds.c
@ -104,6 +104,7 @@ STD_PROTO(static Int p_set_yap_flags, (void));
|
|||||||
STD_PROTO(static Int useprof, (void));
|
STD_PROTO(static Int useprof, (void));
|
||||||
STD_PROTO(static Int useprof0, (void));
|
STD_PROTO(static Int useprof0, (void));
|
||||||
STD_PROTO(static Int profres, (void));
|
STD_PROTO(static Int profres, (void));
|
||||||
|
STD_PROTO(static Int profres2, (void));
|
||||||
|
|
||||||
#define TIMER_DEFAULT 1000
|
#define TIMER_DEFAULT 1000
|
||||||
static FILE *fprof;
|
static FILE *fprof;
|
||||||
@ -147,6 +148,14 @@ static Int useprof0(void) {
|
|||||||
|
|
||||||
|
|
||||||
static Int profres(void) {
|
static Int profres(void) {
|
||||||
|
showprofres(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static Int profres2(void) {
|
||||||
|
showprofres(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
int showprofres(int tipo) {
|
||||||
FILE *f;
|
FILE *f;
|
||||||
long p, p1,p2, total,total2,count,fora, i;
|
long p, p1,p2, total,total2,count,fora, i;
|
||||||
unsigned long es,ee,e1,e2,e;
|
unsigned long es,ee,e1,e2,e;
|
||||||
@ -157,7 +166,6 @@ char nome[200];
|
|||||||
f=fopen("PROFPREDS","r");
|
f=fopen("PROFPREDS","r");
|
||||||
if (f==NULL) return (FALSE);
|
if (f==NULL) return (FALSE);
|
||||||
|
|
||||||
|
|
||||||
i=fscanf(f,"%x - %x - Pred(%ld) - %s",&es,&ee,&p,nome);
|
i=fscanf(f,"%x - %x - Pred(%ld) - %s",&es,&ee,&p,nome);
|
||||||
p1=p2=p;
|
p1=p2=p;
|
||||||
e1=es;
|
e1=es;
|
||||||
@ -170,10 +178,24 @@ char nome[200];
|
|||||||
if (e2<ee) e2=ee;
|
if (e2<ee) e2=ee;
|
||||||
i=fscanf(f,"%x - %x - Pred(%ld) - %s",&es,&ee,&p,nome);
|
i=fscanf(f,"%x - %x - Pred(%ld) - %s",&es,&ee,&p,nome);
|
||||||
}
|
}
|
||||||
|
fclose(f);
|
||||||
|
|
||||||
|
f=fopen("PROFINIT","r");
|
||||||
|
if (f!=NULL) {
|
||||||
|
|
||||||
|
while(i>0) {
|
||||||
|
if (p<p1) p1=p;
|
||||||
|
else if (p>p2) p2=p;
|
||||||
|
if (e1>es) e1=es;
|
||||||
|
if (e2<ee) e2=ee;
|
||||||
|
i=fscanf(f,"%x - %x - Pred(%ld) - %s",&es,&ee,&p,nome);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fclose(f);
|
||||||
|
|
||||||
printf("%ld Addresses from [%x] to [%x]\n",e2-e1,e1,e2);
|
printf("%ld Addresses from [%x] to [%x]\n",e2-e1,e1,e2);
|
||||||
printf("%ld Predicates from (%ld) to (%ld) \n",p2-p1,p1,p2);
|
printf("%ld Predicates from (%ld) to (%ld) \n",p2-p1,p1,p2);
|
||||||
|
|
||||||
fclose(f);
|
|
||||||
|
|
||||||
end=(long *) malloc((e2-e1+1)*sizeof(long));
|
end=(long *) malloc((e2-e1+1)*sizeof(long));
|
||||||
if (end==NULL) { printf("Not enought mem to process results...\n"); return (FALSE); }
|
if (end==NULL) { printf("Not enought mem to process results...\n"); return (FALSE); }
|
||||||
@ -197,19 +219,44 @@ char nome[200];
|
|||||||
|
|
||||||
printf("Total count %ld (other code %ld)\n",total,fora);
|
printf("Total count %ld (other code %ld)\n",total,fora);
|
||||||
|
|
||||||
f=fopen("PROFPREDS","r");
|
|
||||||
if (f==NULL) return (FALSE);
|
|
||||||
|
|
||||||
total2=0;
|
total2=0;
|
||||||
do {
|
p1=0; p2=0;
|
||||||
i=fscanf(f,"%x - %x - Pred(%ld) - %s",&es,&ee,&p,nome);
|
count=0;
|
||||||
if (i<=0) break;
|
|
||||||
count=0;
|
f=fopen("PROFPREDS","r");
|
||||||
while(es<=ee) { count+=end[es-e1]; es++; }
|
if (f==NULL) return(FALSE);
|
||||||
|
if (tipo==0) {
|
||||||
|
do {
|
||||||
|
i=fscanf(f,"%x - %x - Pred(%ld) - %s",&es,&ee,&p,nome);
|
||||||
|
if (i<=0) break;
|
||||||
|
if (p1!=p) { p2=1; p1=p; } else p2++;
|
||||||
|
count=0;
|
||||||
|
while(es<=ee) { count+=end[es-e1]; es++; }
|
||||||
|
total2+=count;
|
||||||
|
if (count) printf("Pred(%ld) - %s (%d) - %ld (%f\%)\n", p,nome,p2,count, ((float) count/total)*100.0);
|
||||||
|
} while(i>0);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
char buffer[300];
|
||||||
|
buffer[0]=0;
|
||||||
|
do {
|
||||||
|
i=fscanf(f,"%x - %x - Pred(%ld) - %s",&es,&ee,&p,nome);
|
||||||
|
if (i<=0) break;
|
||||||
|
if (p1!=p) {
|
||||||
|
p2=1;
|
||||||
|
p1=p;
|
||||||
|
if (count) printf("%s",buffer);
|
||||||
|
total2+=count;
|
||||||
|
count=0;
|
||||||
|
} else
|
||||||
|
p2++;
|
||||||
|
while(es<=ee) { count+=end[es-e1]; es++; }
|
||||||
|
sprintf(buffer,"Pred(%ld) - %s (%d) - %ld (%f\%)\n", p,nome,p2,count, ((float) count/total)*100.0);
|
||||||
|
} while(i>0);
|
||||||
total2+=count;
|
total2+=count;
|
||||||
if (count) printf("Pred(%ld) - %s - %ld (%f\%)\n", p,nome,count, ((float) count/total)*100.0);
|
if (count) printf("%s",buffer);
|
||||||
} while(i>0);
|
}
|
||||||
|
|
||||||
fclose(f);
|
fclose(f);
|
||||||
printf("Total counted %ld (other code %ld)\n",total2,total-total2);
|
printf("Total counted %ld (other code %ld)\n",total2,total-total2);
|
||||||
free(end);
|
free(end);
|
||||||
@ -217,7 +264,6 @@ char nome[200];
|
|||||||
return (TRUE);
|
return (TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif /* LOW_PROF */
|
#endif /* LOW_PROF */
|
||||||
|
|
||||||
|
|
||||||
@ -2448,6 +2494,7 @@ Yap_InitCPreds(void)
|
|||||||
Yap_InitCPred("useprof", 1, useprof, SafePredFlag);
|
Yap_InitCPred("useprof", 1, useprof, SafePredFlag);
|
||||||
Yap_InitCPred("useprof", 0, useprof0, SafePredFlag);
|
Yap_InitCPred("useprof", 0, useprof0, SafePredFlag);
|
||||||
Yap_InitCPred("profres", 0, profres, SafePredFlag);
|
Yap_InitCPred("profres", 0, profres, SafePredFlag);
|
||||||
|
Yap_InitCPred("profres2", 0, profres2, SafePredFlag);
|
||||||
#endif
|
#endif
|
||||||
#ifndef YAPOR
|
#ifndef YAPOR
|
||||||
Yap_InitCPred("$default_sequential", 1, p_default_sequential, SafePredFlag|SyncPredFlag);
|
Yap_InitCPred("$default_sequential", 1, p_default_sequential, SafePredFlag|SyncPredFlag);
|
||||||
|
Reference in New Issue
Block a user