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 は Ned Batchelder のコード生成ツールです)
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]]]
}