极限测试之Matlab与Forcal普通函数调用效率

数值计算,例如微积分、微分方程求解等存在大量的函数调用,故高效的函数调用对数值计算软件来讲是至关重要的。

============

Matlab 2009a的测试代码:

f=@(x,y,z,t)x+y+z; tic; s=0; for x=0:1000 for y=0:100 for z=0:100 s=s+f(x,y,z); end end end s toc s = 6.126720600000000e+009 Elapsed time is 9.546717 seconds.


发现将函数写成m文件后效率会提高,如下例:
m函数:

%file xyz.m function c=xyz(x,y,z) c=x+y+z; end


测试代码:

tic; s=0; for x=0:1000 for y=0:100 for z=0:100 s=s+xyz(x,y,z); end end end s toc s = 6.126720600000000e+009 Elapsed time is 4.724592 seconds.


==========

Forcal 9(OpenFC演示)代码:

f(x,y,z)=x+y+z; mvar: t=sys::clock(), s=0, x=0, while{x<=1000, y=0, while{y<=100, z=0, while{z<=100, s=s+f(x,y,z), z++ }, y++ }, x++ }, s; [sys::clock()-t]/1000;

结果:
6126720600.
1.109秒

二者效率有几倍的差距。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值