Программное обеспечение, где уравнения являются основными объектами интереса?

Я работаю над программой, где основными объектами являются математические уравнения. Уравнения могут возвращать только двойной или логический результат.

Проблемы:

1- много уравнений. (~300 за файл)

2- В конце должен быть журнал вычислений, поэтому каждое уравнение должно каким-то образом иметь возможность регистрировать себя.

3. Это должно быть быстро, как можно быстрее, потому что эти несколько сотен уравнений могут быть запущены миллион раз. (Думайте об этом как большой цикл оптимизации).

4- Я хочу обеспечить определенный порядок появления для зарегистрированных уравнений, который не обязательно похож на код.

В настоящее время я использую C. (или C, с небольшим количеством C++) и пишу каждое уравнение как функциональный макрос. Мне интересно, если это правильный путь. Разве такие проблемы решались раньше? Есть ли другой язык, который лучше подходит для этого, чем C? И есть ли какие-то шаблоны проектирования или практики, которые мне нужно знать для этого конкретного класса проблем?

1 ответ

То есть уравнения превращаются в скомпилированный код, а не интерпретируются? Если это так, это самый быстрый.

Однако, если ваше ведение журнала включает в себя ввод-вывод, это может занять больше времени, что вы можете точно определить, отключив его и сравнив время выполнения. Если это так, возможные пути обхода этого:

  • генерация вывода в двоичном формате, а не форматирование чисел.

  • не писать больше, чем нужно, например, события, а не длинные записи.

  • стараясь не быть привязанным к вращающемуся диску, как запись в файл памяти или на твердотельный диск.

Другие вопросы по тегам