我有一个程序,可以进行大量的矩阵乘法.我以为我会通过减少代码中的循环次数来加快速度,看看会有多快(我稍后会尝试矩阵数学库).事实证明它根本不快.我已经能够用一些示例代码复制问题.我的猜测是testOne()会比testTwo()快,因为它不会创建任何新数组,因为它有第三个循环.在我的机器上,它需要两倍的运行时间:
testOne的持续时间为5000个纪元:657,loopCount:64000000
testTwo的持续时间为5000个纪元:365,loopCount:192000000
我的猜测是multOne()比较慢,multTwo()因为在multOne()CPU中没有写入顺序存储器地址multTwo().听起来不错吗?任何解释将不胜感激.
import java.util.Random;
public class ArrayTest {
double[] arrayOne;
double[] arrayTwo;
double[] arrayThree;
double[][] matrix;
double[] input;
int loopCount;
int rows;
int columns;
public ArrayTest(int rows, int columns) {
this.rows = rows;
this.columns = columns;
this.loopCount = 0;
arrayOne = new double[rows];
arrayTwo = new double[rows];
arrayThree = new double[rows];
matrix = new double[rows][columns];
Random random = new Random();
for (int i = 0; i < rows; i++) { …Run Code Online (Sandbox Code Playgroud)