MATLAB不同索引方式,耗时大不相同

博客作者通过测试发现,MATLAB中不同索引方式对性能影响显著。冒号全列赋值最快,单个元素赋值次之,而直接索引最慢。对于大规模数据处理,应优先考虑冒号赋值,其次是单个元素赋值,速度要求不高时再使用索引。测试揭示了MATLAB矩阵操作底层原理和编译差异。
摘要由CSDN通过智能技术生成

MATLAB不同索引方式,耗时大不相同

没想到吧,用了几年MATLAB我也是才发现……
以前也没在意,今天偶然机会要处理一个超大的数据,为了优化就测了一下。
结果重大发现!想象中完全一样的代码,实际耗时却有明显差别。


测试代码

clear; close all; clc

N = 1000000;
a = zeros(N,5);
% 冒号
tic
for n = 1:N
    a(n,:) = [1,2,3,4,5];
end
toc
% 索引
tic
for n = 1:N
    a(n,1:5) = [1,2,3,4,5];
end
toc
% 单个
tic
for n = 1:N
    a(n,1) = 1;
    a(n,2) = 2;
    a(n,3) = 3;
    a(n,4) = 4;
    a(n,5) = 5;
end
toc

测试时间

三种写法耗时为别为0.07,0.51,0.125
在这里插入图片描述


结论

  1. 优先选择冒号全覆盖
  2. 不行就单个复制
  3. 对速度无要求的时候直接索引

其他

1、原因大概是 MATLAB矩阵底层原理和编译不同。
2、c语言大佬可能知道。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值