轉載自:http://dev.21tx.com/2004/11/10/12460.html
1)使用D3DXMatrixMultiply進行矩陣相乘
2)使用優化的4元數算法模擬矩陣相乘(相乘的結果與1相同)
3)最笨的辦法計算矩陣相乘(要算64個乘法、48個加法、以及若干賦值)
4)使用SSE彙編計算矩陣相乘(要算64個乘法、48個加法、以及若干賦值)
5)使用xmmintrin指令集計算矩陣相乘
結果表明:
1)最快,估計不僅指令進行了優化,算法也進行了優化
2)是1的4~5倍,與3相比,證明算法起了作用
3)是1的10倍左右
4)與3差不多,我ft,這是爲什麼?我明明用的是彙編啊?怎麼速度一點也沒快!!!
5)與4差不多。
經驗教訓:
1)不能直接聲明float[4] f這樣的浮點數組,由於對其問題,在彙編語言中運行不了,應該這樣聲明__declspec(align(16)) float[4] f; 或者這樣聲明
union sse4 {
__m128 m;
float f[4];
};
2)那麼矩陣就是這樣聲明的了:
union sse16 {
__m128 m[4];
float f[4][4];
};