Не, до этого момента мы ничего не видели. А вот показываю .. Перевел эту прогу на 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)