Оптимизация «Водопад» Исчисление переполнения стека

Я работаю над этим кодом C ++:

double robCalculation::calcsomePoad(double freq, double t, double w,
double b, double L, double a, double d, double p, double xbol, double
n, double m, double sigma, double intval, bool RungeVal)
{
auto c0 = 299792458;
auto mue_r =  1.000023;
auto lambda = c0/freq;
dcomp v0(1.0,0.0);
auto z0 = 120*M_PI;
dcomp Z0(z0,0.0);
dcomp j(0.0,1.0);
auto we = w - ((5*t*(1+log(4*M_PI*w/t))) / (4 *M_PI));
auto kc = we / b;
auto temp = pow((1-kc*kc),0.25);
auto temp2 = (2+2*temp) / (1-temp);
auto temp3 =  1/log(temp2);
auto Z0s = 120*M_PI*M_PI * temp3;
auto k0 = 2.0*M_PI / lambda;
dcomp ZL=dcomp(1.0,1.0)*pow(((M_PI*freq*mue_r)/sigma),0.5);
auto l=L;
auto temp4=(a-L)/2;
auto xmin=temp4;
auto xmax=temp4+l;
double temp6 = 0;
.
.
.
}

Как вы можете видеть, много исчисления зависит от переменной в предыдущей строке.

Мой вопрос заключается в следующем: есть ли какой-нибудь алгоритм, API, методика, который вы можете посоветовать мне оптимизировать этот код и сделать исчисление меньше в «водопаде»?

-1

Решение

Нет, этот вид «водопада» присущ вам алгоритму, а точнее: математической задаче, которую решает ваш алгоритм. Хорошая новость: в этом «водопаде» нет ничего плохого.
Мой совет: разбейте его на несколько методов, каждый из которых имеет только два или три параметра, а затем объедините эти методы. Поскольку большинство из этих методов будут довольно короткими и не будут содержать циклов или различий, вы можете пометить их как inline для оптимизации (посмотреть здесь).

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]