关于IPP中ippmMul_mv_64f效率问题
我要做一个3*3矩阵乘以3*1向量的计算,因为这个计算在我整个算法中要计算大约400万次,所以我写了个程序测试下
for(int i=0;i<100000000;i++)
{
oldX = XYZ[0] * Rwz[0][0] + XYZ[1] * Rwz[0][1] + XYZ[2] * Rwz[0][2];
oldY = XYZ[0] * Rwz[1][0] + XYZ[1] * Rwz[1][1] + XYZ[2] * Rwz[1][2];
oldZ = XYZ[0] * Rwz[2][0] + XYZ[1] * Rwz[2][1] + XYZ[2] * Rwz[2][2];
XYZ[0] = oldX;
XYZ[1] = oldY;
XYZ[2] = oldZ;
}
普通的乘法和 IPP中的一个函数
for(int i=0;i<100000000;i++)
{
IppStatus status = ippmMul_mv_64f((const Ipp64f*)Rwz, src1Stride1,
src1Stride2, src1Width, src1Height, (const Ipp64f*)XYZ,
src2Stride2, src2Len,
pDst, dstStride2);
XYZ[0] = pDst[0];
XYZ[1] = pDst[1];
XYZ[2] = pDst[2];
}
结果普通方法用时2.4s左右,而IPP的方法要用到4s+,请问这个是怎么回事,我的机器是pentium(R) D 3.0 3.0 1g 内存
按理说普通乘是单线程的,即使在单核上这两个用时也应该相当啊,在双核上不应该Ipp更慢
我用的是动态连接 IPP