找回密码
 注册
Simdroid-非首页
查看: 83|回复: 2

inline 函数速度研究

[复制链接]
发表于 2011-4-1 22:44:06 | 显示全部楼层 |阅读模式 来自 LAN
到底是用inline 函数还是直接方程计算,做了个小测试,不知道对不对for i=1:1000
    g=inline('x.^2+6','x');
    x=rand(1);
    n=g(x);
end
for i=1:1000
    x=rand(1);
    n=x.^2+6;
end



第一种 时间  Elapsed time is 0.360743 seconds.
第二种 时间  Elapsed time is 0.010243 seconds.
那么 inline函数的优势在哪里呢

发表于 2011-4-2 09:21:38 | 显示全部楼层 来自 北京
Simdroid开发平台
在7.0版本前,MATLAB是没有匿名函数的,inline函数主要是针对一些需要经常调用,但单独写成函数或者m文件又不“值得”的表达式而设计的。当然直接写出表达式效率高,但从代码可读性以及书写方便角度来讲,每次都写一长串表达式也不是那么明智。因此,当对速度要求不是很严格的场合,可以使用内联函数。
正如你上面测试的, 内联函数的调用效率非常低,因此MATLAB从7.0开始推出匿名函数来代替内联函数。但凡内联函数可以实现的功能,匿名函数都能实现。而一些内联函数无法简洁、方便实现的功能,通过匿名函数也方便实现。因此,现在的MATLAB早就推荐用匿名函数来代替内联函数,这个倡议应该从2004年MATLAB7.0刚推出就该大力提倡了,可是都过去7年了,还经常看到有的教材还在使用内联函数。

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2011-4-6 22:13:55 | 显示全部楼层 来自 LAN
谢谢斑竹指点,受益匪浅
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-4 23:26 , Processed in 0.045885 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表