MATLAB运行速度与数组维数的关系

最近看了一些加快matlab运行速度的帖子,但是没有一个特别系统的文章,这里先把自己的实验部分做个简单记录,后面有实验再进行添加


matlab版本:R2014a (8.30 532)

电脑配置:

CPU: i5 - 6200U 2.30GHz(4 CPUs)~2.4GHz

        内存: 8G

显卡: NVIDIA GeForce 930M



我们知道matlab 的数组存储是竖列优先的,但是我发现一个问题,我们在遍历横竖列不均等的数组时,横列遍历反而快一些。测试代码如下:


m = 10;
n = 1000000;

testLength = 100;
testResult = zeros(4, testLength);
for k = 1 : testLength
    a = rand(n, m);
    temp = a;
    count = 0;
    tic
    for i = 1 : m
        for j = 1 : n
    %         count = count + 1;
    %         a(j,i) = a(j,i) + count;
            a(j,i) = a(j,i) * 2;
        end
    end
    t = toc;
    testResult(1, k) = t;

    count = 0;
    tic
    for i = 1 : n
        for j = 1 : m
    %         count = count + 1;
    %         a(i,j) = a(i,j) + count;
            a(i,j) = a(i,j) * 2;
        end
    end
    t = toc;
    testResult(2, k) = t;
    %%
    a = temp';
    count = 0;
    tic
    for i = 1 : m
        for j = 1 : n
    %         count = count + 1;
    %         a(i,j) = a(i,j) + count;
            a(i,j) = a(i,j) * 2;
        end
    end
    t = toc;
    testResult(3, k) = t;

    count = 0;
    tic
    for i = 1 : n
        for j = 1 : m
    %         count = count + 1;
    %         a(j,i) = a(j,i) + count;
            a(j,i) = a(j,i) * 2;
        end
    end
    t = toc;
    testResult(4, k) = t;
    
end
mean(testResult, 2)
[minData, minIndex] = min(testResult);
sum(minIndex==3)
sum(minIndex==1)

我的运行结果:

mean(testResult, 2) = 
[   0.5108
    0.5505
    0.4969
    0.5385 ]

[sum(minIndex==3)   sum(minIndex==1)] = [86 14];


这个实验验证了小循环套大循环,运行速度会快不少。 但是遍历数组的情况是横向遍历反而快一点,有点疑虑。


由于电脑有限,希望广大申通的网友也可以把自己的运行结果记录一下,最好附加电脑配置信息,回复一下,谢谢大家。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值