这种观察并不重要,因为浪费在循环语句上的时间性能可能远高于循环本身.但无论如何,我会分享它,因为我搜索并找不到关于此的话题.我总是有这样的印象:预先分配我将循环的数组,然后循环它,将比直接循环它更好,并决定检查它.代码将比较这两个fors之间的效率:

disp('Pure for with column on statement:')

tic

for k=1:N

end

toc

disp('Pure for with column declared before statement:')

tic

m=1:N;

for k=m

end

toc

但我得到的结果是:

Pure for with column on statement:

Elapsed time is 0.003309 seconds.

Pure for with column declared before statement:

Elapsed time is 0.208744 seconds.

为什么会这样?不应该预先分配更快?

事实上,matlab帮助说:

Long loops are more memory efficient when the colon expression appears

in the FOR statement since the index vector is never created.

因此,与我的期望相反,for语句中的列表达式更好,因为它不分配向量,因此更快.

我做了以下脚本来测试其他场合我也认为会更快:

% For comparison:

N=1000000;

disp('Pure for loop on cell declared on statement:')

tic

for k=repmat({1},1,N)

end

toc

disp('Pure for loop on cell declared before statement:')

tic

mcell=repmat({1},1,N);

for k=mcell

end

toc

disp('Pure for loop calculating length on statement:')

tic

for k=1:length(mcell)

end

toc

disp('Pure for loop calculating length before statement:')

tic

lMcell = length(mcell);

for k=1:lMcell

end

toc

disp('Pure while loop using le:')

% While comparison:

tic

k=1;

while (k<=N)

k=k+1;

end

toc

disp('Pure while loop using lt+1:')

% While comparison:

tic

k=1;

while (k

k=k+1;

end

toc

disp('Pure while loop using lt+1 pre allocated:')

tic

k=1;

myComp = N+1;

while (k

k=k+1;

end

toc

时间是:

Pure for loop on cell declared on statement:

Elapsed time is 0.259250 seconds.

Pure for loop on cell declared before statement:

Elapsed time is 0.260368 seconds.

Pure for loop calculating length on statement:

Elapsed time is 0.012132 seconds.

Pure for loop calculating length before statement:

Elapsed time is 0.003027 seconds.

Pure while loop using le:

Elapsed time is 0.005679 seconds.

Pure while loop using lt+1:

Elapsed time is 0.006433 seconds.

Pure while loop using lt+1 pre allocated:

Elapsed time is 0.005664 seconds.

结论:

>只需通过逗号语句循环就可以获得一些性能,但与for循环所花费的时间相比,这可以忽略不计.

>对于细胞,差异似乎可以忽略不计.

>最好在进行循环之前预先分配长度.

>虽然没有预先分配向量,但是while具有与for相同的效率,这如前所述是有意义的

>正如预期的那样,最好在while语句之前计算固定表达式.

但我无法回答的问题是,细胞怎么样,为什么没有时间差异?开销可能远低于观察到的开销?或者它必须分配单元格,因为它不是一个基本类型的双重?

如果您知道有关此主题的其他技巧,请填写.

只需添加时间来显示转动功能的结果(‘accel’,’off’),如@Magla的回答所述.

Pure for with column on statement:

Elapsed time is 0.181592 seconds.

Pure for with column declared before statement:

Elapsed time is 0.180011 seconds.

Pure for loop on cell declared on statement:

Elapsed time is 0.242995 seconds.

Pure for loop on cell declared before statement:

Elapsed time is 0.228705 seconds.

Pure for loop calculating length on statement:

Elapsed time is 0.178931 seconds.

Pure for loop calculating length before statement:

Elapsed time is 0.178486 seconds.

Pure while loop using le:

Elapsed time is 1.138081 seconds.

Pure while loop using lt+1:

Elapsed time is 1.241420 seconds.

Pure while loop using lt+1 pre allocated:

Elapsed time is 1.162546 seconds.

结果现在按预期区域……

matlab循环语句提高效率,matlab – 循环语句性能并预先分配循环语句本身相关推荐

  1. matlab循环语句提高效率,matlab循环语句for怎么用

    matlab循环语句for怎么用 matlab循环语句for怎么用? matlab中for语句使用方法和应用实例 for循环语句 1.一般格式为: for x(循环变量) = array(数组) co ...

  2. linux sli 提高效率,从原理到性能提升 MCP78智能SLI全解析

    NVIDIA正式发布了"Hbrid SLI"技术 在昨日的2008 CES上,NVIDIA正式向外界发布了"Hbrid SLI"技术,即我们所俗称的混合SLI, ...

  3. 【PHP面试题】请简述项目中优化SQL语句执行效率的方法,从哪些方面,SQL语句如何分析?

    文章目录 一.考点 1.查找分析查询速度慢的原因 1)分析SQL查询慢的方法 2)使用 show profile 3)使用 show status 4)使用 show processlist 5)使用 ...

  4. 【初级C语言】表达式和基本语句(布尔型与0比较,浮点型与0比较,switch语句,提高循环语句的效率)

    一.运算符的优先级 1.如果代码行中的运算符比较多,要用括号确定表达式的操作顺序.以防止产生歧义并提高可读性. 2.即使掌握了各个运算符的运算规则(顺序,结合性等)仍可能写出一个不能确定唯一计算路径的 ...

  5. matlab循环语句矩阵赋值,matlab矩阵赋值语句

    结构数据和单元数据 2.8 稀疏矩阵 2.1 变量和数据操作 2.1.1 变量与赋值 1.变量命名 在MATLAB 6.5中,变量名是以字母开头, 后接字母.数字或下划线的字符...... 使用冒号操 ...

  6. C++循环语句的效率

    C++循环语句的效率 C++/C循环语句中,for语句使用频率最高,while语句其次,do语句很少用.本节重点论述循环体的效率.提高循环体效率的基本办法是降低循环体的复杂性. [建议4-4-1]在多 ...

  7. matlab for循环太慢,Matlab中每个for循环迭代的速度降低

    我在Matlab中编写了一个while循环,应该使用Matlab中的tic toc延迟在指定的时间间隔内将数组中的每个值从Matlab发送到arduino,然后读取值并将它们存储在变量中并对其进行图形 ...

  8. C语言循环四要素是那些,基于信息化的c语言中循环语句的教学设计探讨

    李芙蓉 摘要:C语言是程序初学者的很好的入门语言,它功能强大,使用灵活.而循环结构是C语言中最复杂.最重要的结构.现在随着网络和手机的广泛使用,信息化越来越多的应用于教学,怎样将信息化融入教学设计中, ...

  9. matlab条件语句怎么写,matlab条件语句怎么写

    1. matlab条件语句用法 for 语句不能这样用,应该用for嵌套语句: S0=50; K=50; r=0.1; sigma=0.4; T=0.4167; q=0; t=0.0833; rand ...

最新文章

  1. 此代码募集最优秀的答案
  2. 苹果6换屏多钱_手机换屏维修的猫腻,附换屏须知
  3. 《信息学奥赛一本通》 高精除以低精。输入两个正整数,求它们的商(做整除)。
  4. 对象并不一定都是在堆上分配内存的
  5. Windows服务编写综述
  6. 如何快速理解递归——蓝桥杯 试题 基础练习 FJ的字符串(递归与非递归解法)——10行代码AC
  7. 使用XML管理模版資源
  8. C语言STATIC用法
  9. 滑动轨迹 曲线 python_python曲线图
  10. fn_dblog_如何使用fn_dblog和fn_dump_dblog直接在SQL Server数据库中连续读取事务日志文件数据
  11. mysql安装 2018最新安装mysql教程及遇到的问题解决Windows下
  12. 机器学习之使用贝叶斯算法实现拼写检查器
  13. php路径详解,详解与PHP路径相关的dirname,realpath,__FILE__函数
  14. soapui直接下载响应内容为本地的文件
  15. 热点的ap频段哪个快_热点ap频段有什么区别
  16. 微信公众号文章排版中,去掉图片和图片之间的空白
  17. [转]签了工作之后才发现,自己太草率了!(很长很真实!但会对你有所帮助的!)
  18. Java中csv文件读写分析
  19. 2021-09-26 absl.flags._exceptions.DuplicateFlagError:
  20. 无线电能传输LCL-S拓扑/WPT MATLAB/simulink仿真模型 (模型左边为两电平H桥逆变器,LCL-S串联谐振,右边不可控整流结构)

热门文章

  1. 【硬见小百科】20个硬件工程师随时可能用得上的电路图
  2. oracle 谓词是什么意思,Oracle谓词推入
  3. 在半个中国象棋棋盘上,马在左下角(1,1)处,马走日字,求到指定位置有多少种走法
  4. Js函数:根据身份证号码判断年龄是否大于18岁
  5. RFID犯人手环点名定位系统管理方案
  6. 华为鸿蒙系统p40多久能用,华为P40或用鸿蒙 华为鸿蒙系统好用吗什么时候能用华为P40发售时间...
  7. qlib智能量化里的“因子分析“,“多空分析”
  8. 我眼里的企业内耗9大怪状,兼说中国人的劣根性
  9. Unity3D游戏开发
  10. 让你的大疆在测绘领域物尽其用