changeset 2436:86d14aebd527 libavcodec

simplify benchmark
author michael
date Mon, 17 Jan 2005 18:25:32 +0000
parents c89ac0e70c66
children 8a30df830ad6
files eval.c
diffstat 1 files changed, 15 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/eval.c	Sun Jan 16 22:11:47 2005 +0000
+++ b/eval.c	Mon Jan 17 18:25:32 2005 +0000
@@ -141,15 +141,11 @@
 
     return d;
 }      
-       
+
 static double evalPow(Parser *p){
-    if(p->s[0]=='+') p->s++;
-       
-    if(p->s[0]=='-'){ 
-        p->s++;
-        return -evalPrimary(p);
-    }else
-        return  evalPrimary(p);
+    int sign= (*p->s == '+') - (*p->s == '-');
+    p->s += sign&1;
+    return (sign|1) * evalPrimary(p);
 }
 
 static double evalFactor(Parser *p){
@@ -171,17 +167,15 @@
 }
 
 static double evalExpression(Parser *p){
-    double ret;
+    double ret= 0;
 
     if(p->stack_index <= 0) //protect against stack overflows
         return NAN;
     p->stack_index--;
 
-    ret= evalTerm(p);
-    while(p->s[0]=='+' || p->s[0]=='-'){
-        if(*p->s++ == '+') ret+= evalTerm(p);
-        else               ret-= evalTerm(p);
-    }
+    do{
+        ret += evalTerm(p);
+    }while(*p->s == '+' || *p->s == '-');
 
     p->stack_index++;
 
@@ -220,6 +214,13 @@
     0
 };
 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));
+    
+    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