s=0, i=0, while{i<=1000, s=s+f(1), i++}, s;- Z* q9 m/ y. V$ A. Y( ~$ V: y7 h
[sys::clock()-t0]/1000;
复制代码
结果: 3 L& r6 C' p7 A1 e$ N+ Y# q* g67100033.! B7 |4 |( D) c. l0 F( Z( L
0.64 秒 J; M( L1 }0 X0 q, d" T i) T* A; p# M; S8 A==================0 o. s4 Q) T* V8 i* G. O d
! _. L% b" g! d5 k7 j! R( I, R可以看出,Matlab运行大的程序,仅编译就会耗费不少时间。4 ?' ^" I4 D$ Z8 ^+ g
/ C9 H+ U4 K! ], h& \" ?
================== 6 D. ~" N' u! o/ t1 P) s+ R1 p' p0 r% I- ]& e
为什么Forcal第一次编译耗时较长(约0.688秒),而以后编译耗时较少(约6.3e-002秒)? . q- r" G8 V9 p( n# J5 F5 ^" W9 P % R! K7 l. ~" N9 ~. P3 KForcal编译器在初次使用时,给编译模块分配的内存较少,此时若所编译的表达式较短,则编译所用内存足够用,在编译时就不用再分配内存;若遇到一个较长的表达式,编译模块就要重新分配内存,直到能编译该表达式为止,故耗费了一些时间;以后,若遇到的表达式都短于以前曾编译的长表达式,就不再重新分配内存,故不再降低编译速度。 , G7 i, Y, Y$ s2 l& Q O. e, Y+ p& N* [* y/ I+ r
目前,需重新初始化Forcal,才释放给编译模块分配的较大内存,但一般不需要这样做。- E" S3 G) c/ L4 [