我在一个 Android 应用程序中有一些代码,当我分析我的应用程序时,它会占用大部分时间。我试图优化它,但仍然占用了大部分 CPU 时间。我想知道是否有人对我如何加快速度有任何想法。这是我使用的代码的精简版本:
输入:
d 是浮点数数组
a 是浮点数数组
e 是浮点数数组
输出:
out 是一个包含 3 个浮点数的数组
代码:
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' 是原始顶点。其余的数组是骨架关节信息。