首先,推荐一篇比较,分析了四种执行函数效率对比。
Ref:https://zhuanlan.zhihu.com/p/35808505?group_id=969873960783101952
结果:直接调用>匿名>feval>eval。但不是说就不用eval了,eval是个很灵活的函数,在批量读取命名处理等地方非常好用。
25个案例里面的比较
结果:匿名,子函数,嵌套函数效率类似,inline效率极低,而且差很多。
很多时候自己的程序可以tic,toc试试比较一下。
自己的一些经验:
1.我用的是17b的版本,个人推荐用新不用旧,新版本提供了更多的库,优化更好,效率通常会更高一点。虽然17b有点速度问题。。据说18a已经改进了。
2. 从17b的使用上来说,因为自己做了大文件数据处理。有一点经验是,小文件上matlab的读取和处理效率是很快的,速度可以接受。当数据文件大小超过了一定阈值的时候,效率显著变慢,以数量级上升。
我用了三种方式读取这个坑爹的大文件,直接读取,matlab自己切块读取,mex。
效率排序:mex>切块>直接读取。而且差距异常之大。