bza*_*zak 3 performance speed matlab
是否有任何技术可以使 MATLAB 代码执行得更快?
我正在谈论可以使我的 PC 更快的事情(例如停止某些 .exe 或软件以提高 PC 性能)。我注意到有时我的 PC 在两个不同的时间运行相同的任务:例如,他可以在 45 秒内运行一个程序,而在 10 分钟内再次运行同一个程序。
是 MATLAB 在您的计算机上运行缓慢还是您在 MATLAB 中编写的程序运行缓慢?
MATLAB 大量使用动态内存分配和重新分配;MAtrix 或数组调整大小可能非常缓慢且不确定;如果矩阵或数组增长,则在删除旧副本之前分配新内存并将现有数据复制到新内存。您可以通过预先分配此类数组来避免这种内存颠簸:例如以下代码:
x = 0;
for k = 2:1000
x(k) = x(k-1) + 5;
end
Run Code Online (Sandbox Code Playgroud)
导致x在每次迭代时调整大小,并且运行速度非常慢。对比如下代码:
x = zeros(1, 1000);
for k = 2:1000
x(k) = x(k-1) + 5;
end
Run Code Online (Sandbox Code Playgroud)
预先分配阵列,这样就不会发生调整大小,并且运行速度会快得多。
MathWorks 网站有一整页详细介绍了此技术和其他性能改进技术;该页面包括以下内容:
请注意,您建议的解决方案在 MathWorks 的列表中排在最后,您应该首先查看所有其他要点,除非您正在做一些明显需要资源的事情,例如运行虚拟机或在运行 MATLAB 的同时播放高清视频,看着正在运行的其他进程可能是汗流浃背的小东西。
| 归档时间: |
|
| 查看次数: |
18767 次 |
| 最近记录: |