очередной эксперемент по глумлению (над чем сами для себя решайте)
имеем : GNU GCC, контроллер lpc2148 и функцию f(a,x)=sqrt( fabs(cos( exp(a) + sin(log(x)))))
код на С
float func_c (float a , float x)
{
return sqrt( fabs(cos( exp(a) + sin(log(x)))));
}
код на фортране
REAL FUNCTION FF(A,X)
REAL A,X
FF=SQRT(ABS(COS( EXP(A) + SIN(LOG(X)))));
END FUNCTION FF
все это компиляется ( -Os )в один проект, заливается и запускается
выполняется кусок
FIO1DIR |= _BV(24) ;
while(1)
{
FIO1CLR |= _BV(24) ;
res=ff_(&x,&y);
FIO1SET |= _BV(24) ;
res = func_c (x,y);
}
на 24 пине мерятся импулсы осцилом
итого на фртране 136 микросекунд
на С 252 микросекунд
результаты расчета верны для обоих вызовов. разница по скорости в 2 раза
ОДНАКО ЗАБАВНО!
вот думаю вычисления в циклах на фортране написать. почему нет?
инструмент есть - нада пользоватся!