Commit f6828d4c authored by michael's avatar michael

simplify

benchmark


git-svn-id: file:///var/local/repositories/ffmpeg/trunk@3844 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent efc93f9e
...@@ -141,15 +141,11 @@ static double evalPrimary(Parser *p){ ...@@ -141,15 +141,11 @@ static double evalPrimary(Parser *p){
return d; return d;
} }
static double evalPow(Parser *p){ static double evalPow(Parser *p){
if(p->s[0]=='+') p->s++; int sign= (*p->s == '+') - (*p->s == '-');
p->s += sign&1;
if(p->s[0]=='-'){ return (sign|1) * evalPrimary(p);
p->s++;
return -evalPrimary(p);
}else
return evalPrimary(p);
} }
static double evalFactor(Parser *p){ static double evalFactor(Parser *p){
...@@ -171,17 +167,15 @@ static double evalTerm(Parser *p){ ...@@ -171,17 +167,15 @@ static double evalTerm(Parser *p){
} }
static double evalExpression(Parser *p){ static double evalExpression(Parser *p){
double ret; double ret= 0;
if(p->stack_index <= 0) //protect against stack overflows if(p->stack_index <= 0) //protect against stack overflows
return NAN; return NAN;
p->stack_index--; p->stack_index--;
ret= evalTerm(p); do{
while(p->s[0]=='+' || p->s[0]=='-'){ ret += evalTerm(p);
if(*p->s++ == '+') ret+= evalTerm(p); }while(*p->s == '+' || *p->s == '-');
else ret-= evalTerm(p);
}
p->stack_index++; p->stack_index++;
...@@ -220,6 +214,13 @@ static const char *const_names[]={ ...@@ -220,6 +214,13 @@ static const char *const_names[]={
0 0
}; };
main(){ main(){
int i;
printf("%f == 12.7\n", ff_eval("1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1)", const_values, const_names, NULL, NULL, NULL, NULL, NULL)); printf("%f == 12.7\n", ff_eval("1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1)", const_values, const_names, NULL, NULL, NULL, NULL, NULL));
for(i=0; i<1050; i++){
START_TIMER
ff_eval("1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1)", const_values, const_names, NULL, NULL, NULL, NULL, NULL);
STOP_TIMER("ff_eval")
}
} }
#endif #endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment