• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

DelphiXE4inline的用法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

为了提高应用程序的性能,可以用inline声明一个函数过过程,对于声明为inline的过程,编译器在编译时,会取代正常的过程调用方式,取而代之是直接把这个函数的编译代码拿过来生成到调用该过程的地方,有多处调用一个函数,都直接在调用处插入函数的编译代码,这样的弊端,会生成较大的EXE文件。

声明的方法:

procedure MyFunc(x:integer):string;inline

有多种情况的函数或过程是不支持inline的:

  • 后绑定的方法,如virtual,dynamic,message方法
  • 包含汇编的过程
  • Contructors与destructors方法
  • The main program block, unit initialization, and unit finalization blocks cannot be inlined.
  • Routines that are not defined before use cannot be inlined.
  • 用开放数组为参数的过程,如:procedure Add(A: array of Integer)
  • Package中支持inline,但Packages间不支持
  • 循环引用的Unit间不支持inline,如a,b,c三个unit,a引用b,b引用c,c引用a,则编译时不生成inline代码,编译器在inline代码时,循环依赖的unit不编译出inline代码,但对于其中引用的unit,还是生成inline代码的,如在上面的例子中,如果A单元也采用了D单元,从单元D的代码可能会被内联,因为它不参与循环依赖。
  • 如果一个过程定义在interface部分,实现代码在implementation部分,则不会inline
  • while do 或 repeat until等中使用的过程


关于inline有三个编译条件变量可用:
{$INLINE ON}:支持inline指令,这是默认的
{$INLINE OFF}:关闭inline编译方式,不支持inline
{$INLINE AUTO}:自动支持inline,当inline on 时,对于32byte的过程自动进行inline.

参考: Delphi help Calling Procedures and Functions


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
如何让Matlab中的Simulink支持中文显示发布时间:2022-07-18
下一篇:
matlab绘图--线性规划图解法示意发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap