我在Android應用程序中有一些代碼,當我分析我的應用程序時,它是大部分時間佔用的東西。我試圖優化它,但仍佔用了大部分CPU時間。我想知道如果有人對我如何加快速度有任何想法。這是使用代碼Im的壓縮版本:可以加速這個Java代碼?
輸入:
d是陣列漂浮
一個是陣列漂浮
e是陣列漂浮
輸出:
出爲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'是原始頂點。其餘的數組是骨架聯合信息。
我真的考慮使用,而不是像這樣的陣列明確命名的局部變量。 –
有可能(並且很多人會說,有必要)使它更加簡潔。速度可能可以通過頭髮來改善。如果這佔用了所有的CPU時間,那將是因爲它每秒鐘執行數百萬次,而不是因爲它很慢。 –
你可能會先解釋這段代碼應該做什麼。 –