Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我从编写的函数中遇到了一些非常奇怪的计时行为。如果我将函数包装在另一个空容器函数中,它将获得3倍的加速。
> >抽动; foo(args);托克耗时:〜140秒 > >抽动; bar(args);托克耗时:〜35秒 这是关键-bar()的定义: 定义条(参数)在MATLAB中是否为嵌套函数调用触发了某种优化?我应该在编写的每个函数中添加一个虚拟函数吗? 回答: 据我所知,JIT加速器不对命令行表达式进行操作。因此,当您运行“ tic; foo(args); toc”时,foo的代码将完全在MATLAB解释器中运行。但是,当您运行“ tic; bar(args); toc”时,将在解释器中对bar进行评估,并且JIT加速器会尝试将对foo()的调用编译为本地代码。 我真的很想细节,但这就是要点。 MATLAB的JIT功能的细节很难得到。我发现的大部分内容都在The MathWorks的Loren博客上。我可以找到的有关仅命令行解释器的最接近的权威性声明是: http : //blogs.mathworks.com/loren/2006/05/10/memory-management-for-functions-and-variables/#comment -207 更多&回答... |
![]() |
![]() |