小组Java
  • 疑问:为什么Math包下简单的运算都用native的,难道c++的加减乘除都比java快吗?

    2016/12/27 画在云端 5 评论

如题,像

public static native double floor(double a);

但我并还没去找到Math相关的c++实现代码,求查找方法。

但我找到了Matrix.multiplyMM() 的c++实现,只是做了循环乘法然后赋值,这个会比java快吗?

static void multiplyMM(float* r, const float* lhs, const float* rhs)
{
for (int i=0 ; i<4 ; i++) {
register const float rhs_i0 = rhs[ I(i,0) ];
register float ri0 = lhs[ I(0,0) ] * rhs_i0;
register float ri1 = lhs[ I(0,1) ] * rhs_i0;
register float ri2 = lhs[ I(0,2) ] * rhs_i0;
register float ri3 = lhs[ I(0,3) ] * rhs_i0;
for (int j=1 ; j<4 ; j++) {
register const float rhs_ij = rhs[ I(i,j) ];
ri0 += lhs[ I(j,0) ] * rhs_ij;
ri1 += lhs[ I(j,1) ] * rhs_ij;
ri2 += lhs[ I(j,2) ] * rhs_ij;
ri3 += lhs[ I(j,3) ] * rhs_ij;
}
r[ I(i,0) ] = ri0;
r[ I(i,1) ] = ri1;
r[ I(i,2) ] = ri2;
r[ I(i,3) ] = ri3;
}
}

1 1 收藏


直接登录
最新评论