【发布时间】:2011-07-21 23:02:36
【问题描述】:
我有一些我一直在使用的 MATLAB 代码。共有三个部分,例如 A、B 和 C。A 和 C 可以更改,B 保持不变。
我所做的是将 A、B 和 C 分成单独的 .m 文件(不是函数,只是脚本)。 A 只是创建一组变量,B 包含逻辑,C 包含结果的绘图。我将 D 称为一个文件,其中我所做的只是线性复制/粘贴 A、B 和 C 的全部内容。
如果我运行 A,然后是 B,然后是 C,B 中的迭代会非常缓慢,每次迭代大约 15 秒。 如果我运行 D(只有 A 然后 B 然后 C 粘贴)它会很快,每次迭代大约 2 秒。
鉴于 MATLAB 以完全相同的顺序运行完全相同的代码,为什么两者的执行时间会有如此大的差异?
【问题讨论】:
-
也许 MATLAB JIT 能够更好地优化 D 中的代码,因为它可以一次看到所有代码。
-
如果将 B 变成函数而不是脚本会怎样?
-
你是如何记录执行时间的?尝试
clear all;tic,A;B;C;toc,然后与clear all;tic,D;toc进行比较。无论如何,@Praetorian 给出了一个合理的解释.. -
另外,让我猜一下:您对内置函数的使用在这段代码中并不占主导地位,而且您大部分时间都花在解释器上,比如
for循环等。这将使其成为与 Matlab JIT 差异的主要候选者。
标签: optimization matlab