IcBench: Sample Benchmark App
This commit is contained in:
41
icapp.c
41
icapp.c
@ -213,7 +213,7 @@ char *keysep;
|
|||||||
unsigned befgen(unsigned char **_in, unsigned n, int fmt, int isize, FILE *fi, int kid, int skiph, int decs, int divs, int mdelta) {
|
unsigned befgen(unsigned char **_in, unsigned n, int fmt, int isize, FILE *fi, int kid, int skiph, int decs, int divs, int mdelta) {
|
||||||
unsigned char *in = *_in,*ip;
|
unsigned char *in = *_in,*ip;
|
||||||
unsigned nmax = 0;
|
unsigned nmax = 0;
|
||||||
#define LSIZE 1024
|
#define LSIZE (1024*16)
|
||||||
char s[LSIZE+1];
|
char s[LSIZE+1];
|
||||||
double pre;
|
double pre;
|
||||||
|
|
||||||
@ -229,28 +229,25 @@ unsigned befgen(unsigned char **_in, unsigned n, int fmt, int isize, FILE *fi, i
|
|||||||
case T_TXT: if(verbose) printf("reading text lines. pre=%.2f, col=%d, sep=%s\n", pre, kid, keysep?keysep:"");
|
case T_TXT: if(verbose) printf("reading text lines. pre=%.2f, col=%d, sep=%s\n", pre, kid, keysep?keysep:"");
|
||||||
while(fgets(s, LSIZE, fi)) {
|
while(fgets(s, LSIZE, fi)) {
|
||||||
unsigned char *p = s,*q;
|
unsigned char *p = s,*q;
|
||||||
int k=0,keyid=1,c;
|
int k=0, keyid=1, c;
|
||||||
s[strlen(s) - 1] = 0;
|
s[strlen(s) - 1] = 0;
|
||||||
for(; *p; ) {
|
q = p;
|
||||||
if(isize > 0) {
|
if(kid > 1)
|
||||||
while(*p && !isdigit(*p) && *p != '-' && *p != '+') { if(keysep && strchr(keysep,*p)) keyid++; p++; }
|
do {
|
||||||
uint64_t u = strtoll(p, &q, 10) - mdelta;
|
p = q;
|
||||||
if(*q == '.')
|
if(keysep && strchr(keysep,*q)) keyid++;
|
||||||
u = pre>1.0?round(strtod(p, &q)*pre):strtod(p, &q) - mdelta;
|
q++;
|
||||||
if(!keysep || keyid == kid /*|| ++k == kid*/) {
|
} while(*q && keyid != kid); c=p[8]; p[8]=0; if(verbose>=5 && n < 100 || verbose>=9) printf("%8s ", p); p[8]=c;
|
||||||
IPUSH(in,n,isize,nmax,u); c=*q; *q=0; if(verbose>=5 && n < 100 || verbose>=9) printf("%s->%lld ", p, u, c); *q = c;
|
if(isize > 0) {
|
||||||
break;
|
while(*p && !isdigit(*p) && *p != '-' && *p != '+') p++;
|
||||||
}
|
uint64_t u = strtoll(p, &q, 10) - mdelta;
|
||||||
p = q;
|
if(*q == '.')
|
||||||
} else {
|
u = pre>1.0?round(strtod(p, &q)*pre):strtod(p, &q) - mdelta;
|
||||||
while(*p && !isdigit(*p) && *p != '-' && *p != '.' && *p != '+') { if(keysep && strchr(keysep,*p)) keyid++; p++; }
|
IPUSH(in,n,isize,nmax,u); c=*q; *q=0; if(verbose>=5 && n < 100 || verbose>=9) printf("%s->%lld ", p, u, c); *q = c;
|
||||||
double d = strtod(p, &q) - mdelta;
|
} else {
|
||||||
if(!keysep || keyid == kid/*|| ++k == kid*/) {
|
while(*p && !isdigit(*p) && *p != '-' && *p != '.' && *p != '+') { if(keysep && strchr(keysep,*p)) keyid++; p++; }
|
||||||
IPUSH(in,n,-isize,nmax,d); c=*q; *q=0; if(verbose>=5 && n < 100 || verbose>=9) printf("%s->%f ", p, d); *q = c;
|
double d = strtod(p, &q) - mdelta;
|
||||||
break;
|
IPUSH(in,n,-isize,nmax,d); c=*q; *q=0; if(verbose>=5 && n < 100 || verbose>=9) printf("%s->%f ", p, d); *q = c;
|
||||||
}
|
|
||||||
p = q;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
Reference in New Issue
Block a user