06.08.2013 Views

内容简介作者简介 - 科学与工程计算系

内容简介作者简介 - 科学与工程计算系

内容简介作者简介 - 科学与工程计算系

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

分别运行以下编译指令:<br />

mcc -O none -x test<br />

tic;test;toc<br />

elapsed_time =<br />

0.8200<br />

mcc -O none -O fold_non_scalar_mxarrays:on -x test<br />

tic;test;toc<br />

elapsed_time =<br />

0<br />

11.5.2 优化循环<br />

【例 11.5.2-1】激活选项 array_indexing,可以改善简单的一维或二维数组的索引性能。如果<br />

在编译时关闭该选项,编译器将采用通用的索引函数来索引这些简单的数组。<br />

[test2.m]<br />

function y = test2(x,i1,i2);<br />

y = x(i1,i2);<br />

分别运行以下指令:<br />

A=magic(4);<br />

mcc -O none -x test2<br />

tic;test2(A,3,4);toc<br />

elapsed_time =<br />

0.2200<br />

mcc -O none -O fold_non_scalar_mxarrays:on -x test2<br />

tic;test2(A,3,4);toc<br />

elapsed_time =<br />

0<br />

【例 11.5.2-2】激活选项 optimize_integer_for_loops,可简化循环。当循环变量的初值和步长<br />

均为整数时, 编译器将采用 C/C++的整型变量,而非 MATLAB 的数组变量。(建议在调试<br />

程序时,不要激活该优化选项。)<br />

[test3.m]<br />

function y=test3(x)<br />

for i = 1:length(x)-1<br />

x(i) = x(i) + x(i+1);<br />

end<br />

y=x;<br />

分别运行以下指令,对比各自编译得到的 MEX 文件的性能:<br />

mcc -O none -x test3<br />

tic;test3(1:100);toc<br />

elapsed_time =<br />

0.4400<br />

mcc -O none -O fold_non_scalar_mxarrays:on -x test3<br />

tic;test3(1:100);toc<br />

elapsed_time =<br />

0<br />

11.5.3 优化条件语句<br />

【例 11.5.3-1】当条件语句中的两个运算量都是标量整数时,激活选项 optimize_conditionals,<br />

编译器将优化该条件语句:采用 C 的条件运算取代原 MATLAB 的条件运算。MATLAB 能<br />

8

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!