【发布时间】:2014-08-12 14:24:39
【问题描述】:
我在一个 .m 文件中有大约 400 行代码。这个文件被执行了很多次,所以它是程序中最大的时间消耗者。有时当我执行程序时,我只需要运行 400 行中的大约 50 行(50 行中的哪一行将在执行开始时确定)。我希望能够指定应该运行哪些行(或者在应该丢弃的行上自动获得相当于“%-comment”的行),而不使用任何会带来时间开销的 if 语句或类似语句。有没有可能做到这一点?
【问题讨论】:
-
你分析过代码吗? Matlab 内置了一个非常好的配置文件。在调用
.m文件中的内容之前添加profile on,最后添加profile viewer。您可能会看到这些 if 语句在脚本的完整运行中只需要 -
不看代码,你可以冒险说你需要修改你的代码设计。您很可能需要将脚本拆分为函数。
-
@fixitinthemix 它高度依赖于您的代码。你可以阅读一些设计模式/想法here。
-
"在每一行添加一个 if 语句" 为什么要在每一行添加
if?使用if覆盖大量代码。如果这不可能,那么这意味着您要运行的那 50 行分布在整个 .m 文件中,但是您会花更多时间将剩余的 350 行注释掉,然后您将花在运行整个事情上。 -
此外,即使您在每一行添加了
if,这也不会比运行该行本身慢。if语句只会计算一个逻辑变量,即true或false。这比您在这些线上可能拥有的任何其他东西都要快。定义一个逻辑变量skip,在程序开头设置为false,需要的地方加上if (~skip)。这应该很快。
标签: performance matlab optimization