MATLAB编译器中编译文件的性能优化
优化编译性能主要借助于选项标志-O实现。假设待编译文件为Myfile.m,mcc的调用格式如下。
·mcc -o all Myfile:激活所有优化功能。
·mcc -o none Myfile:关闭所有优化功能。
·mcc -o <optimization option>:[on/off] Myfile:激活或关闭某个特定的优化功能。其中optimization option可以取fold_mxarrays 、fold_non_scalar等。
例22.6 优化标量。假设有以下文件,要求对其编译,比较得到MEX的性能。
[shili.m]
function y = foo(x)
y = 3*pi*x;
分别运行以下编译指令:
mcc -O none -x shili
tic;shili(1:10);toc
elapsed_time =
0.5500
mcc -O none -O fold_scalar_mxarrays:on -x shili
tic;shil(1:10);toc
elapsed_time =
0.1100
例22.7 激活选项optimize_integer_for_loops,可简化循环。当循环变量的初值和步长均为整数时,编译器将采用C/C++的整型变量,而非MATLAB的数组变量。(建议在调试程序时,不要激活该优化选项。)
[liti.m]
function y=liti(x)
for i = 1:length(x)-1
x(i)= x(i)+ x(i+1);
end
y=x;
分别运行以下指令,对比各自编译得到的MEX文件的性能:
mcc -O none -x liti
tic;liti(1:100);toc
elapsed_time =
0.4400
mcc -O none -O fold_non_scalar_mxarrays:on -x liti
tic;liti(1:100);toc
elapsed_time =
0