Как скомпилировать выражение exprtk один раз, но вычислить несколько раз на основе параметра метода (IOC)?

Мне нужно оценивать математическое выражение каждый раз, когда метод вызывается определенной структурой (инвертированное управление). Конечно, компиляция выражения в методе не является опцией, так как этот метод вызывается очень часто и оказывает значительное влияние на производительность. я выбрал exprtk из-за заявленной выдающейся производительности.

Но если я хочу скомпилировать выражение один раз, мне нужно использовать определенную переменную, отличную от той, в которую я на самом деле нахожусь. Затем в теле метода мне нужно переназначить значение.

Я компилирую функцию один раз в конструкторе типа, выполняя вычисления:

        M_symbol_table.add_variable("c", *M_arg_c);
M_symbol_table.add_constants();
M_expression.register_symbol_table(M_symbol_table);

if(!M_parser.compile(M_formula, M_expression)) {
printf("Mobility (M) formula compilation error...\n");
}

Назначение происходит в вызываемой функции.

    inline double get_M(double c) {
M_arg_c = c;
double value = M_expression.value();
printf("%0.5f\t%0.5f\n",c,value);
return value;
}

Я определенно не эксперт C ++, поэтому я могу упустить что-то очевидное.

0

Решение

Задача ещё не решена.

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector