Android アプリにいくつかのコードがあり、アプリをプロファイリングするときに、ほとんどの時間を占めるコードがあります。最適化を試みましたが、まだ CPU 時間のほとんどを占めています。どうすればこれをスピードアップできるかについて誰かがアイデアを持っているかどうか疑問に思っています。これは、使用しているコードの要約バージョンです。
入力:
d は float 配列
a は float 配列
e は float 配列
出力:
out は 3 つの float の配列です
コード:
float [] c=new float[3];
float [] b=new float[3];
float [] out=new float[3];
c[0] = a[0] - d[0 * 4 + 3];
c[1] = a[1] - d[1 * 4 + 3];
c[2] = a[2] - d[2 * 4 + 3];
b[0] = c[0]*d[0 * 4 + 0] + c[1]*d[1 * 4 + 0] + c[2]*d[2 * 4 + 0];
b[1] = c[0]*d[0 * 4 + 1] + c[1]*d[1 * 4 + 1] + c[2]*d[2 * 4 + 1];
b[2] = c[0]*d[0 * 4 + 2] + c[1]*d[1 * 4 + 2] + c[2]*d[2 * 4 + 2];
out[0] = b[0] * e[0 * 4 + 0] + b[1] * e[0 * 4 + 1] + b[2] * e[0 * 4 + 2] + e[0 * 4 + 3];
out[1] = b[0] * e[1 * 4 + 0] + b[1] * e[1 * 4 + 1] + b[2] * e[1 * 4 + 2] + e[1 * 4 + 3];
out[2] = b[0] * e[2 * 4 + 0] + b[1] * e[2 * 4 + 1] + b[2] * e[2 * 4 + 2] + e[2 * 4 + 3];
3D モデル アニメーションの頂点変換に興味がある人向け。'out' は変換された頂点、'a' は元の頂点です。残りの配列はスケルトン ジョイント情報です。