ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
5 декабря
110858 Топик полностью
AlexandrY (21.01.2008 18:19, просмотров: 524) ответил Evgeny_CD на Ну подумаешь, наконец-то снялся с ручника :)
Не, до этого момента мы ничего не видели. А вот показываю .. Перевел эту прогу на C-и
double delta = 1e-6;//	-- tolerance
static int  n; 
typedef double(*T_func)(double);

double bisect(T_func f,double a, double b, double fa, double fb)
{
 double c;
 double fc;

 c = (a+b)/2;
 if ((c==a) || (c==b) || (fabs(a-b)<delta)) return c; 
 n  = n+1;
 fc = f(c);
 if ((fa*fc) < 0 ) 
    return (bisect(f,a,c,fa,fc));
 else 
    return (bisect(f,c,b,fc,fb));
}

//-- find root of f in the inverval [a,b]. needs f(a)*f(b)<0
double solve(T_func f,double a, double b)
{
   n = 0;
   return bisect( f, a, b, f(a),f(b));
}

//-- our function
double f(double x)
{
  return (x*x*x-x-1);
}

//-- find zero in [1,2]
void Test_bisect(void)
{
  INT64U t1,t2;
  double res;
  t1 = Get_time_uc();
  res = solve(f,1,2);
  t2 = Get_time_uc();
  Mon_printf("Execution on C = %ld uS , result=%f, cnt=%d\n\r", t2-t1, res, n);
}

И получил такой ответ: Execution on C = 286 uS , result=1.324718, cnt=20 Итого: прога на C-и быстрее LUA в 20 раз. При этом LUA на STR91x работает со скоростью проги на C-и запущенной на каком-нибудь PIC18F452 скомпиленой в HT-PICC18 (кто забыл смотрит здесь: http://aly.ogmis.l …s/Whets/WhetsRes.htm#1)
INDEMSYS