by HPC_ZY
同样的效果不同的实现方法,运行时间和内存消耗大不相同。今天分享MATLAB运行时间分析方法及一些简单的提速技巧。
一、计算运行时间
1.1 基本方法
大家最常用的应该就是如下方式,直接获取某段代码的运行时间。
tic
func1();
t1 = toc;
tic
func2();
t2 = toc;
1.2 进阶方法
但是想要知道具体是哪一行代码比较耗时,写起来就比较繁琐(尤其是循环中的代码)。今天要分享一个更快捷、更详细的方法——MATLAB自带的“运行并计时”,如下图
用一个实例来讲解,用三种方法初始化一个全1矩阵:
clear; clc
r = 10000;
tic
a = func1(r);
toc
tic
b = func2(r);
toc
tic
c = func3(r);
toc
% 按C语言结构初始化
function out = func1(r)
out = zeros(r,r);
for i = 1:r
for j = 1:r
out(i,j) = 1;
end
end
end
% 混合C语言和MATLAB类
function out = func2(r)
out = zeros(r,r);
for i = 1:r
out(i,:) = 1;
end
end
% 纯MATLAB类
function out = func3(r)
out = ones(r,r);
end
点击运行并计时,看看效果
出现一个弹窗,这个就厉害了!它统计了所有代码和代码块运行的时间和调用的次数。点开三个子函数看看(这部分推荐拷贝代码在自己电脑上运行试试),我的如下(双击看大图)。
通过这个简单的例子我想说,尽量不要在MATLAB里面写“C语言”
俗话说得好“治病先看病”,先找到耗时的代码段,才能更好的针对性优化~
二、基本提速方法
待更新
其他
- 有相关的问题可以留言告诉我,一并更新