forcal 发表于 2011-7-31 10:18

极限测试之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;
/1000;结果:
6126720600.
1.109  秒

二者效率有几倍的差距。

ehi28 发表于 2011-12-20 02:04

嗯,不错,支持一下.

alair005 发表于 2012-2-7 13:08

hxftntA 发表于 2019-5-28 17:44

http://www.treesea.com/admin/xianweijing/pic/201561215384318.jpg

http://www.treesea.com/admin/editor/UploadFile/201561215400198.jpg

http://www.treesea.com/admin/editor/UploadFile/2015612153824295.jpg

http://www.treesea.com/admin/editor/UploadFile/2015612153834123.jpg

http://www.treesea.com/admin/editor/UploadFile/2015612153856764.jpg

http://www.treesea.com/admin/editor/UploadFile/201561215398442.jpg

http://www.treesea.com/admin/editor/UploadFile/2015612153920343.jpg

http://www.treesea.com/admin/editor/UploadFile/2015612153932923.jpg

http://www.treesea.com/admin/editor/UploadFile/2015612153944479.jpg
页: [1]
查看完整版本: 极限测试之Matlab与Forcal普通函数调用效率