Я работаю над программой, которая выполняет матричные и векторные операции на Java. Множественный вызов функций и создание объектов, которые происходят в моей текущей реализации, делают ее медленной и трудной для понимания.
Например, я хочу обновить положение механической точки путем интеграции скорости:
void update(Vector3 position, Vector3 speed, float dt){
Vector3 displacement = new Vector3(speed);
displacement.assignMul(dt);
position.assignAdd(displacement);
}
Здесь API не естественно, и вдобавок мне нужно выделить сборку новой ссылки Vector3. Очевидно, я измерил значительное улучшение производительности в реальных случаях использования при встраивании вычислений таким образом:
void update(Vector3 position, Vector3 speed, float dt){
position.x += speed.x * dt;
position.y += speed.y * dt;
position.z += speed.z * dt;
}
Есть ли какой-либо инструмент, который мог бы генерировать этот код из языка, специфичного для предметной области, по запросу? Синтаксис типа Cog был бы хорош. (Cog — это инструмент генерации кода от Неда Бэтчелдера)
void update(Vector3 position, Vector3 speed, float dt){
// [[[DSL position += speed * dt ]]]
position.x += speed.x * dt;//Generated Code
position.y += speed.y * dt;//Generated Code
position.z += speed.z * dt;//Generated Code
// [[[END]]]
}