【文章內(nèi)容簡(jiǎn)介】
ne x foo tic。foo(1:10)。toc elapsed_time = mcc O none O fold_scalar_mxarrays:on x foo tic。foo(1:10)。toc elapsed_time = 8 【例 】 而對(duì)于非標(biāo)量的情況,相應(yīng)的可激活優(yōu)化選項(xiàng) fold_non_scalar_mxarrays。優(yōu)化編譯以下文件: [] function y = test y = [ 1 0。 0 1] * [ pi pi/2。 pi pi/2 ]。 分別運(yùn)行以下編譯指令: mcc O none x test tic。test。toc elapsed_time = mcc O none O fold_non_scalar_mxarrays:on x test tic。test。toc elapsed_time = 0 【例 】激活選項(xiàng) array_indexing,可以改善簡(jiǎn)單的一維或二維數(shù)組的索引性能。如果在編譯時(shí)關(guān)閉該選項(xiàng),編譯器將采用通用的索引函數(shù)來(lái)索引這些簡(jiǎn)單的數(shù)組。 [] function y = test2(x,i1,i2)。 y = x(i1,i2)。 分別運(yùn)行以下指令: A=magic(4)。 mcc O none x test2 tic。test2(A,3,4)。toc elapsed_time = mcc O none O fold_non_scalar_mxarrays:on x test2 tic。test2(A,3,4)。toc elapsed_time = 0 【例 】激活選項(xiàng) optimize_integer_for_loops,可簡(jiǎn)化循環(huán)。當(dāng)循環(huán)變量的初值和步長(zhǎng)均為整數(shù)時(shí), 編譯器將采用 C/C++的整型變量,而非 MATLAB的數(shù)組變量。(建議在調(diào)試程序時(shí),不要激活該優(yōu)化選項(xiàng)。) [] function y=test3(x) for i = 1:length(x)1 x(i) = x(i) + x(i+1)。 end y=x。 分別運(yùn)行以下指令,對(duì)比各自編譯得到的 MEX文件的性能: mcc O none x test3 tic。test3(1:100)。toc elapsed_time = 9 mcc O none O fold_non_scalar_mxarrays:on x test3 tic。test3(1:100)。toc elapsed_time = 0 【例 】當(dāng)條件語(yǔ)句中的兩個(gè)運(yùn)算量都是標(biāo)量整數(shù)時(shí),激活選項(xiàng)optimize_conditionals,編譯器將優(yōu)化該條件語(yǔ)句:采用 C 的條件運(yùn)算取代原 MATLAB 的條件運(yùn)算。 MATLAB能夠識(shí)別出 nargin、 nargout、 for語(yǔ)句的循環(huán)變量以及所有整數(shù)標(biāo)量。 [] function test4(a,b,c,d) if (nargin 4) d = 。 end 運(yùn)行以下指令,對(duì)之進(jìn)行不同的編譯,并比較各自得到的 MEX文件性能: mcc O none x test4 tic。test4(1,3,4)。toc mcc O none O fold_non_scalar_mxarrays:on x test4 tic。test4(1,3,4)。toc 創(chuàng)建獨(dú)立的外部應(yīng)用程序 獨(dú)立外部程序與 MEX文件的不同工作特點(diǎn) 獨(dú)立外部程序創(chuàng)建過(guò)程說(shuō)明 mbuild mcc 創(chuàng)建獨(dú)立應(yīng)用程序 創(chuàng)建獨(dú)立應(yīng)用程序時(shí) mcc 的使用格式和常用選項(xiàng)標(biāo)志 由全 M 源文件產(chǎn)生 EXE應(yīng)用程序 【例 】創(chuàng)建一個(gè)適應(yīng)“超定”、“恰定”、“欠定”線(xiàn)性方程求解的示例性應(yīng)用程序。 ( 1) [] function LLS() Ae=5。 %2 Av=2。 %3 [A,b]=LLSDATA(Ae,Av)。 x=A\b。 % S=39。恰定 39。 if AeAv S=39。超定 39。 10 elseif AeAv S=39。欠定 39。 end disp([39。用外部獨(dú)立程序求如下 39。 S 39。方程 Ax=b 的解,其中 39。]) cs=blanks(Ae)39。 ns=fix(Ae/2)。 As=cs。As(ns)=39。A39。 bs=cs。bs(ns)=39。b39。 es=cs。es(ns)=39。=39。 disp([As cs es cs num2str(A) cs cs cs cs cs bs cs es cs num2str(b)]) disp(39。方程的解 39。) nxs