小编Kra*_*ple的帖子

为什么减少循环次数不会加快程序的速度?

我有一个程序,可以进行大量的矩阵乘法.我以为我会通过减少代码中的循环次数来加快速度,看看会有多快(我稍后会尝试矩阵数学库).事实证明它根本不快.我已经能够用一些示例代码复制问题.我的猜测是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)

java performance matrix-multiplication

5
推荐指数
1
解决办法
110
查看次数

标签 统计

java ×1

matrix-multiplication ×1

performance ×1