我有一个应用程序,我对我的代码进行了一些速度分析,限制因素是两个数组的乘法。我有一个数组 X 如下(在我的真实代码中,它是一个 2000 个元素长而不是 15 个):
abcdefghijklmno
和第二个数组 Y(在我的真实代码中它是 300 个元素长而不是 6 个),如下所示:
ABCDEF
然后我按如下方式将数组相乘以创建一个新数组 C:
value 1 A*a+B*b+C*c+D*d+E*e+F*f
value 2 A*b+B*c+C*d+D*e+E*f+F*g
value 3 A*c+B*d+C*e+D*f+E*g+F*h
value 4 A*d+B*e+C*f+D*g+E*h+F*i
value 5 A*e+B*f+C*g+D*h+E*i+F*j
value 6 A*f+B*g+C*h+D*i+E*j+F*k
value 7 A*g+B*h+C*i+D*j+E*k+F*l
value 8 A*h+B*i+C*j+D*k+E*l+F*m
value 9 A*i+B*j+C*k+D*l+E*m+F*n
value 10 A*j+B*k+C*l+D*m+E*n+F*o
我想知道是否有办法加快这段代码的速度。我目前只使用代码:
for (int l=0; l<X.length; l++) {
val=0;
for (int i=0; i<X.length; i++)
for (int j=0; j<J.length; j++)
val+=X[i]*Y[j];
C[l]=val;
}
我虽然可以使用傅立叶变换,但它比乘以它要慢。