使用MATLAB Profiler提升程序运行的效率

很多同学在研究和学习的过程中都会经常使用 MATLAB。很多时候当编好一个程序之后,我们发现程序运行的效率达不到预想的要求。盲目的去找程序的缺陷往往既花时间也没有什么太大效果。这里我想告诉大家 MATLAB 很重要的功能 – Profiler – 能够帮助你很快找到程序的问题,然后可以很快的提高程序的效率。

当你写完一个程序之后,首先要试着运行。试着运行的时候有两个目的,一个是验证是否正确(这个不在我们讨论的范围),另外就是要看一下效率是否满意。对于后者你要做的是从主界面选择Desktop – Profiler. (见下图)在这里插入图片描述然后从profiler 运行程序(运行的指令和你在这个主界面想运行程序的指令一样, 可以有参数也可以没参数)在这里插入图片描述Profiler运行的结果也会在主界面显示。其结果与正常的运行的都一样,但是它可以给你显示出运行中每一行所执行的次数和花费的时间(见下图)。在这里插入图片描述然后你需要重点做的是仔细研究那些花费时间很长的步骤。很多情况下,整个程序里的某一行或者某两行会占据绝大多数的计算时间,而通常那几行都是因为程序写的不好所以效率很低(通常容易出现的问题是,1)重复计算一些可以只计算一次的事情,比如每次循环计算同一个normcdf,而实际你可以事先算好储存在一个数组, 2) 使用太多层的for循环,而实际可以用矩阵计算来代替,3)可以把一些计算有序的结合起来,比如当计算某些乘法的顺序时候,应该刻意安排一些需要计算少的顺序)。在调试中,一般只需要focus在这几行比较花时间的地方,其他的行都可以忽略。

在真正执行大规模的运行之前(当然极为小的程序就无所谓了),我建议先保证占据超过20%计算时间的行的效率已经都达到最优了。(注意当你改完一行之后,可能那行的时间一下就变成接近于0了,然后你应该接着看新的最占据计算时间的行,直到最重要的行都已经最优化为止。)这样会事半功倍。

多数时候,当用MATLAB比较熟练以后,用profiler分析之后立刻就知道自己哪儿没写好(很多时候写的时候就知道,但是不知道会有多大影响,就先按照比较好写的方法写)。总的来说,这是一个非常实用的工具,这篇文章的目的就是希望没有使用过的同学能够知道,会大大提高你们使用MATLAB的效率。

注:虽然此文是针对MATLAB的Profiler,但对于其他科学计算语言(如Python),也有类似的功能,使用好类似的工具可以帮助大家很快的提升科学计算的程序水平。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值