![]() |
MATLAB Magical Mystery计时行为
我从编写的函数中遇到了一些非常奇怪的计时行为。如果我将函数包装在另一个空容器函数中,它将获得3倍的加速。
[INDENT] > >抽动; foo(args);托克 [/INDENT]耗时:〜140秒 [INDENT] > >抽动; bar(args);托克 [/INDENT]耗时:〜35秒 这是关键-bar()的定义: [INDENT]定义条(参数) [INDENT] foo(args) [/INDENT]结束 [/INDENT]在[URL="http://en.wikipedia.org/wiki/MATLAB"]MATLAB中[/URL]是否为嵌套函数调用触发了某种优化?我应该在编写的每个函数中添加一个虚拟函数吗? 回答: 据我所知,JIT加速器不对命令行表达式进行操作。因此,当您运行“ tic; foo(args); toc”时,foo的代码将完全在MATLAB解释器中运行。但是,当您运行“ tic; bar(args); toc”时,将在解释器中对bar进行评估,并且JIT加速器会尝试将对foo()的调用编译为本地代码。 我真的很想细节,但这就是要点。 MATLAB的JIT功能的细节很难得到。我发现的大部分内容都在The MathWorks的Loren博客上。我可以找到的有关仅命令行解释器的最接近的权威性声明是: [URL="http://blogs.mathworks.com/loren/2006/05/10/memory-management-for-functions-and-variables/#comment-207"]http[/URL] : [URL="http://blogs.mathworks.com/loren/2006/05/10/memory-management-for-functions-and-variables/#comment-207"]//blogs.mathworks.com/loren/2006/05/10/memory-management-for-functions-and-variables/#comment -207[/URL] [url=https://stackoverflow.com/questions/1313438]更多&回答...[/url] |
所有时间均为北京时间。现在的时间是 23:33。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.